Skip to content

Commit

Permalink
Emscripten: use a fake size for external sizing check
Browse files Browse the repository at this point in the history
The check would fail if the canvas happened to be the correct size
already. (#66, mentioned in #58)
  • Loading branch information
Daft-Freak committed Jan 29, 2019
1 parent 80d690a commit 1767d09
Showing 1 changed file with 5 additions and 4 deletions.
9 changes: 5 additions & 4 deletions src/video/emscripten/SDL_emscriptenvideo.c
Expand Up @@ -206,21 +206,22 @@ Emscripten_CreateWindow(_THIS, SDL_Window * window)
scaled_w = SDL_floor(window->w * wdata->pixel_ratio);
scaled_h = SDL_floor(window->h * wdata->pixel_ratio);

emscripten_set_canvas_size(scaled_w, scaled_h);

/* set a fake size to check if there is any CSS sizing the canvas */
emscripten_set_canvas_size(1, 1);
emscripten_get_element_css_size(NULL, &css_w, &css_h);

wdata->external_size = SDL_floor(css_w) != scaled_w || SDL_floor(css_h) != scaled_h;
wdata->external_size = SDL_floor(css_w) != 1 || SDL_floor(css_h) != 1;

if ((window->flags & SDL_WINDOW_RESIZABLE) && wdata->external_size) {
/* external css has resized us */
scaled_w = css_w * wdata->pixel_ratio;
scaled_h = css_h * wdata->pixel_ratio;

emscripten_set_canvas_size(scaled_w, scaled_h);
SDL_SendWindowEvent(window, SDL_WINDOWEVENT_RESIZED, css_w, css_h);
}

emscripten_set_canvas_size(scaled_w, scaled_h);

/* if the size is not being controlled by css, we need to scale down for hidpi */
if (!wdata->external_size) {
if (wdata->pixel_ratio != 1.0f) {
Expand Down

0 comments on commit 1767d09

Please sign in to comment.