Force full display redraw on window resize and enter/leave fullscreen.

This commit is contained in:
SarahW 2018-04-16 17:29:42 +01:00
commit 1107fc4f28
2 changed files with 12 additions and 0 deletions

View file

@ -707,6 +707,8 @@ int render()
if (vid_resize == 2) if (vid_resize == 2)
SDL_SetWindowSize(window, custom_resolution_width, custom_resolution_height); SDL_SetWindowSize(window, custom_resolution_width, custom_resolution_height);
device_force_redraw();
} }
if (renderer_doreset) if (renderer_doreset)
{ {
@ -740,6 +742,8 @@ int render()
case SDL_WINDOWEVENT: case SDL_WINDOWEVENT:
if (event.window.event == SDL_WINDOWEVENT_CLOSE) if (event.window.event == SDL_WINDOWEVENT_CLOSE)
wx_stop_emulation(window_ptr); wx_stop_emulation(window_ptr);
if (event.window.event == SDL_WINDOWEVENT_RESIZED)
device_force_redraw();
if (window_remember) if (window_remember)
{ {
@ -831,6 +835,7 @@ int render()
remembered_rect.y -= border_y; remembered_rect.y -= border_y;
SDL_GetWindowSize(window, &remembered_rect.w, &remembered_rect.h); SDL_GetWindowSize(window, &remembered_rect.w, &remembered_rect.h);
SDL_SetWindowFullscreen(window, video_fullscreen_mode == 0 ? SDL_WINDOW_FULLSCREEN_DESKTOP : SDL_WINDOW_FULLSCREEN); SDL_SetWindowFullscreen(window, video_fullscreen_mode == 0 ? SDL_WINDOW_FULLSCREEN_DESKTOP : SDL_WINDOW_FULLSCREEN);
device_force_redraw();
} }
if (window_doinputgrab) { if (window_doinputgrab) {
window_doinputgrab = 0; window_doinputgrab = 0;
@ -858,6 +863,7 @@ int render()
SDL_SetWindowSize(window, remembered_rect.w, remembered_rect.h); SDL_SetWindowSize(window, remembered_rect.w, remembered_rect.h);
SDL_SetWindowPosition(window, remembered_rect.x, remembered_rect.y); SDL_SetWindowPosition(window, remembered_rect.x, remembered_rect.y);
SDL_WarpMouseGlobal(remembered_mouse_x, remembered_mouse_y); SDL_WarpMouseGlobal(remembered_mouse_x, remembered_mouse_y);
device_force_redraw();
} }
if (win_doresize) if (win_doresize)

View file

@ -443,6 +443,8 @@ int render()
#endif #endif
if (vid_resize == 2) if (vid_resize == 2)
SDL_SetWindowSize(window, custom_resolution_width, custom_resolution_height); SDL_SetWindowSize(window, custom_resolution_width, custom_resolution_height);
device_force_redraw();
} }
if (window_doreset) if (window_doreset)
{ {
@ -486,6 +488,8 @@ int render()
case SDL_WINDOWEVENT: case SDL_WINDOWEVENT:
if (event.window.event == SDL_WINDOWEVENT_CLOSE) if (event.window.event == SDL_WINDOWEVENT_CLOSE)
wx_stop_emulation(ghwnd); wx_stop_emulation(ghwnd);
if (event.window.event == SDL_WINDOWEVENT_RESIZED)
device_force_redraw();
if (event.window.event == SDL_WINDOWEVENT_FOCUS_LOST) if (event.window.event == SDL_WINDOWEVENT_FOCUS_LOST)
{ {
if (is_fullscreen()) if (is_fullscreen())
@ -605,6 +609,7 @@ int render()
remembered_rect.y -= border_y; remembered_rect.y -= border_y;
SDL_GetWindowSize(window, &remembered_rect.w, &remembered_rect.h); SDL_GetWindowSize(window, &remembered_rect.w, &remembered_rect.h);
SDL_SetWindowFullscreen(window, video_fullscreen_mode == 0 ? SDL_WINDOW_FULLSCREEN_DESKTOP : SDL_WINDOW_FULLSCREEN); SDL_SetWindowFullscreen(window, video_fullscreen_mode == 0 ? SDL_WINDOW_FULLSCREEN_DESKTOP : SDL_WINDOW_FULLSCREEN);
device_force_redraw();
} }
if (window_doinputgrab) { if (window_doinputgrab) {
window_doinputgrab = 0; window_doinputgrab = 0;
@ -629,6 +634,7 @@ int render()
#if SDL_VERSION_ATLEAST(2, 0, 4) #if SDL_VERSION_ATLEAST(2, 0, 4)
SDL_WarpMouseGlobal(remembered_mouse_x, remembered_mouse_y); SDL_WarpMouseGlobal(remembered_mouse_x, remembered_mouse_y);
#endif #endif
device_force_redraw();
} }
if (win_doresize) if (win_doresize)