From 38ac2f879ac71fd8cc139003bd957ec9ff947497 Mon Sep 17 00:00:00 2001 From: Patrice Mandin Date: Sat, 30 Sep 2017 20:59:18 +0200 Subject: [PATCH] atari:gem: Move common code for querying work area and resize of SDL surface at end of function --- src/video/gem/SDL_gemevents.c | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/src/video/gem/SDL_gemevents.c b/src/video/gem/SDL_gemevents.c index a0f2aa31e..05c559372 100644 --- a/src/video/gem/SDL_gemevents.c +++ b/src/video/gem/SDL_gemevents.c @@ -187,9 +187,9 @@ void GEM_PumpEvents(_THIS) static int do_messages(_THIS, short *message, short latest_msg_id) { - int quit; + int quit, update_work_area, sdl_resize; - quit = 0; + quit = update_work_area = sdl_resize = 0; switch (message[0]) { case MSG_SDL_ID: quit=(message[1] == latest_msg_id); @@ -201,7 +201,7 @@ static int do_messages(_THIS, short *message, short latest_msg_id) break; case WM_MOVED: wind_set(message[3],WF_CURRXYWH,message[4],message[5],message[6],message[7]); - wind_get (message[3], WF_WORKXYWH, &GEM_work_x, &GEM_work_y, &GEM_work_w, &GEM_work_h); + update_work_area = 1; break; case WM_TOPPED: wind_set(message[3],WF_TOP,message[4],0,0,0); @@ -233,7 +233,7 @@ static int do_messages(_THIS, short *message, short latest_msg_id) 0,0); GEM_refresh_name = SDL_FALSE; } - wind_get (message[3], WF_WORKXYWH, &GEM_work_x, &GEM_work_y, &GEM_work_w, &GEM_work_h); + update_work_area = 1; break; case WM_UNICONIFY: wind_set (message[3],WF_UNICONIFY,message[4],message[5],message[6],message[7]); @@ -249,14 +249,13 @@ static int do_messages(_THIS, short *message, short latest_msg_id) 0,0); GEM_refresh_name = SDL_FALSE; } - wind_get (message[3], WF_WORKXYWH, &GEM_work_x, &GEM_work_y, &GEM_work_w, &GEM_work_h); + update_work_area = 1; break; case WM_SIZED: wind_set (message[3], WF_CURRXYWH, message[4], message[5], message[6], message[7]); - wind_get (message[3], WF_WORKXYWH, &GEM_work_x, &GEM_work_y, &GEM_work_w, &GEM_work_h); + update_work_area = sdl_resize = 1; GEM_win_fulled = SDL_FALSE; /* Cancel maximized flag */ GEM_lock_redraw = SDL_TRUE; /* Prevent redraw till buffers resized */ - SDL_PrivateResize(GEM_work_w, GEM_work_h); break; case WM_FULLED: { @@ -273,9 +272,8 @@ static int do_messages(_THIS, short *message, short latest_msg_id) GEM_win_fulled = SDL_TRUE; } wind_set (message[3], WF_CURRXYWH, x, y, w, h); - wind_get (message[3], WF_WORKXYWH, &GEM_work_x, &GEM_work_y, &GEM_work_w, &GEM_work_h); + update_work_area = sdl_resize = 1; GEM_lock_redraw = SDL_TRUE; /* Prevent redraw till buffers resized */ - SDL_PrivateResize(GEM_work_w, GEM_work_h); } break; case WM_BOTTOMED: @@ -289,6 +287,13 @@ static int do_messages(_THIS, short *message, short latest_msg_id) break; } + if (update_work_area) { + wind_get (message[3], WF_WORKXYWH, &GEM_work_x, &GEM_work_y, &GEM_work_w, &GEM_work_h); + if (sdl_resize) { + SDL_PrivateResize(GEM_work_w, GEM_work_h); + } + } + return quit; }