emscripten: Add a hint for specifying the canvas selector

Now that we're not going through EGL, this is easy
This commit is contained in:
Charlie Birks 2022-02-26 14:52:08 +00:00
parent b5aedaad59
commit d75fb0995d
2 changed files with 16 additions and 1 deletions

View File

@ -366,6 +366,15 @@ extern "C" {
*/
#define SDL_HINT_EMSCRIPTEN_ASYNCIFY "SDL_EMSCRIPTEN_ASYNCIFY"
/**
* \brief Specify the CSS selector used for the "default" window/canvas
*
* This hint only applies to the emscripten platform
*
* The default value is "#canvas"
*/
#define SDL_HINT_EMSCRIPTEN_CANVAS_SELECTOR "SDL_EMSCRIPTEN_CANVAS_SELECTOR"
/**
* \brief override the binding element for keyboard inputs for Emscripten builds
*

View File

@ -215,6 +215,7 @@ Emscripten_CreateWindow(_THIS, SDL_Window * window)
SDL_WindowData *wdata;
double scaled_w, scaled_h;
double css_w, css_h;
const char *selector;
/* Allocate window internal data */
wdata = (SDL_WindowData *) SDL_calloc(1, sizeof(SDL_WindowData));
@ -222,7 +223,12 @@ Emscripten_CreateWindow(_THIS, SDL_Window * window)
return SDL_OutOfMemory();
}
wdata->canvas_id = SDL_strdup("#canvas");
selector = SDL_GetHint(SDL_HINT_EMSCRIPTEN_CANVAS_SELECTOR);
if (!selector) {
selector = "#canvas";
}
wdata->canvas_id = SDL_strdup(selector);
if (window->flags & SDL_WINDOW_ALLOW_HIGHDPI) {
wdata->pixel_ratio = emscripten_get_device_pixel_ratio();