Skip to content

Commit

Permalink
emscripten: force resize event when pixel ratio changes
Browse files Browse the repository at this point in the history
Without this, applications can't react to changed canvas size on window zoom.
  • Loading branch information
dos1 committed Mar 17, 2019
1 parent b8bd0aa commit 6311c7c
Showing 1 changed file with 11 additions and 1 deletion.
12 changes: 11 additions & 1 deletion src/video/emscripten/SDL_emscriptenevents.c
Expand Up @@ -586,10 +586,14 @@ static EM_BOOL
Emscripten_HandleResize(int eventType, const EmscriptenUiEvent *uiEvent, void *userData)
{
SDL_WindowData *window_data = userData;
SDL_bool force = SDL_FALSE;

/* update pixel ratio */
if (window_data->window->flags & SDL_WINDOW_ALLOW_HIGHDPI) {
window_data->pixel_ratio = emscripten_get_device_pixel_ratio();
if (window_data->pixel_ratio != emscripten_get_device_pixel_ratio()) {
window_data->pixel_ratio = emscripten_get_device_pixel_ratio();
force = SDL_TRUE;
}
}

if(!(window_data->window->flags & FULLSCREEN_MASK))
Expand All @@ -611,6 +615,12 @@ Emscripten_HandleResize(int eventType, const EmscriptenUiEvent *uiEvent, void *u
emscripten_set_element_css_size(NULL, w, h);
}

if (force) {
/* force the event to trigger, so pixel ratio changes can be handled */
window_data->window->w = 0;
window_data->window->h = 0;
}

SDL_SendWindowEvent(window_data->window, SDL_WINDOWEVENT_RESIZED, w, h);
}
}
Expand Down

0 comments on commit 6311c7c

Please sign in to comment.