From ea37d78860d204f4020867a95e2b79d9e2ce0792 Mon Sep 17 00:00:00 2001 From: Patrice Mandin Date: Sat, 30 Sep 2017 23:40:38 +0200 Subject: [PATCH] atari:gem: Do not align work area when window is iconified --- src/video/gem/SDL_gemevents.c | 16 ++++++++-------- src/video/gem/SDL_gemvideo.c | 7 +++++-- src/video/gem/SDL_gemvideo.h | 2 +- 3 files changed, 14 insertions(+), 11 deletions(-) diff --git a/src/video/gem/SDL_gemevents.c b/src/video/gem/SDL_gemevents.c index b521ac055..afde7b05f 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, update_work_area, align_work_area, sdl_resize; + int quit, update_work_area, iconified, sdl_resize; - quit = update_work_area = align_work_area = sdl_resize = 0; + quit = update_work_area = iconified = 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]); - update_work_area = align_work_area = 1; + 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; } - update_work_area = 1; + update_work_area = iconified = 1; break; case WM_UNICONIFY: wind_set (message[3],WF_UNICONIFY,message[4],message[5],message[6],message[7]); @@ -249,11 +249,11 @@ static int do_messages(_THIS, short *message, short latest_msg_id) 0,0); GEM_refresh_name = SDL_FALSE; } - update_work_area = align_work_area = 1; + update_work_area = 1; break; case WM_SIZED: wind_set (message[3], WF_CURRXYWH, message[4], message[5], message[6], message[7]); - update_work_area = align_work_area = sdl_resize = 1; + update_work_area = sdl_resize = 1; GEM_win_fulled = SDL_FALSE; /* Cancel maximized flag */ GEM_lock_redraw = SDL_TRUE; /* Prevent redraw till buffers resized */ break; @@ -272,7 +272,7 @@ 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); - update_work_area = align_work_area = sdl_resize = 1; + update_work_area = sdl_resize = 1; GEM_lock_redraw = SDL_TRUE; /* Prevent redraw till buffers resized */ } break; @@ -288,7 +288,7 @@ static int do_messages(_THIS, short *message, short latest_msg_id) } if (update_work_area) { - GEM_align_work_area(this, message[3], 1); + GEM_align_work_area(this, message[3], 1, iconified); if (sdl_resize) { SDL_PrivateResize(GEM_work_w, GEM_work_h); diff --git a/src/video/gem/SDL_gemvideo.c b/src/video/gem/SDL_gemvideo.c index 0de0462fa..f6f100b88 100644 --- a/src/video/gem/SDL_gemvideo.c +++ b/src/video/gem/SDL_gemvideo.c @@ -800,7 +800,7 @@ SDL_Surface *GEM_SetVideoMode(_THIS, SDL_Surface *current, } } - GEM_align_work_area(this, GEM_handle, 0); + GEM_align_work_area(this, GEM_handle, 0, 0); GEM_fullscreen = SDL_FALSE; } @@ -840,11 +840,14 @@ SDL_Surface *GEM_SetVideoMode(_THIS, SDL_Surface *current, return(current); } -void GEM_align_work_area(_THIS, short windowid, int clear_pads) +void GEM_align_work_area(_THIS, short windowid, int clear_pads, int iconified) { int new_x, new_w; wind_get(windowid, WF_WORKXYWH, &GEM_work_x,&GEM_work_y,&GEM_work_w,&GEM_work_h); + if (iconified) { + return; + } /* Align work area on 16 pixels boundary (faster for bitplanes modes) */ new_x = GEM_work_x; diff --git a/src/video/gem/SDL_gemvideo.h b/src/video/gem/SDL_gemvideo.h index 1fd7c5607..3e2f6a72e 100644 --- a/src/video/gem/SDL_gemvideo.h +++ b/src/video/gem/SDL_gemvideo.h @@ -37,7 +37,7 @@ struct WMcursor { /* Functions prototypes */ void GEM_wind_redraw(_THIS, int winhandle, short *inside); -void GEM_align_work_area(_THIS, short windowid, int clear_pads); +void GEM_align_work_area(_THIS, short windowid, int clear_pads, int iconified); /* Private display data */