--- a/src/video/gem/SDL_gemevents.c Sun Oct 31 13:15:33 2004 +0000
+++ b/src/video/gem/SDL_gemevents.c Sat Nov 06 08:56:23 2004 +0000
@@ -210,7 +210,9 @@
SDL_PrivateAppActive(1, SDL_APPINPUTFOCUS);
break;
case WM_REDRAW:
- GEM_wind_redraw(this, message[3],&message[4]);
+ if (!GEM_lock_redraw) {
+ GEM_wind_redraw(this, message[3],&message[4]);
+ }
break;
case WM_ICONIFY:
case WM_ALLICONIFY:
@@ -240,8 +242,9 @@
break;
case WM_SIZED:
wind_set (message[3], WF_CURRXYWH, message[4], message[5], message[6], message[7]);
+ wind_get (message[3], WF_WORKXYWH, &x2, &y2, &w2, &h2);
GEM_win_fulled = SDL_FALSE; /* Cancel maximized flag */
- wind_get (message[3], WF_WORKXYWH, &x2, &y2, &w2, &h2);
+ GEM_lock_redraw = SDL_TRUE; /* Prevent redraw till buffers resized */
SDL_PrivateResize(w2, h2);
break;
case WM_FULLED:
@@ -260,6 +263,7 @@
}
wind_set (message[3], WF_CURRXYWH, x, y, w, h);
wind_get (message[3], WF_WORKXYWH, &x2, &y2, &w2, &h2);
+ GEM_lock_redraw = SDL_TRUE; /* Prevent redraw till buffers resized */
SDL_PrivateResize(w2, h2);
}
break;
--- a/src/video/gem/SDL_gemvideo.c Sun Oct 31 13:15:33 2004 +0000
+++ b/src/video/gem/SDL_gemvideo.c Sat Nov 06 08:56:23 2004 +0000
@@ -401,6 +401,7 @@
GEM_locked = SDL_FALSE;
GEM_win_fulled = SDL_FALSE;
GEM_fullscreen = SDL_FALSE;
+ GEM_lock_redraw = SDL_TRUE; /* Prevent redraw till buffers are setup */
VDI_screen = NULL;
VDI_pitch = VDI_w * VDI_pixelsize;
@@ -720,6 +721,7 @@
#endif
this->UpdateRects = GEM_UpdateRects;
+ GEM_lock_redraw = SDL_FALSE; /* Enable redraw */
/* We're done */
return(current);
@@ -858,6 +860,10 @@
{
SDL_Surface *surface;
+ if (GEM_lock_redraw) {
+ return;
+ }
+
surface = this->screen;
if (surface->flags & SDL_FULLSCREEN) {
@@ -951,6 +957,10 @@
static int GEM_FlipHWSurface(_THIS, SDL_Surface *surface)
{
+ if (GEM_lock_redraw) {
+ return(0);
+ }
+
if (surface->flags & SDL_FULLSCREEN) {
return GEM_FlipHWSurfaceFullscreen(this, surface);
} else {
--- a/src/video/gem/SDL_gemvideo.h Sun Oct 31 13:15:33 2004 +0000
+++ b/src/video/gem/SDL_gemvideo.h Sat Nov 06 08:56:23 2004 +0000
@@ -79,6 +79,7 @@
SDL_bool window_fulled; /* Window maximized ? */
SDL_bool mouse_relative; /* Report relative mouse movement */
SDL_bool locked; /* AES locked for fullscreen ? */
+ SDL_bool lock_redraw; /* Prevent redraw till buffers are setup */
short message[8]; /* To self-send an AES message */
SDL_bool fullscreen; /* Fullscreen or windowed mode ? */
@@ -120,6 +121,7 @@
#define GEM_win_fulled (this->hidden->window_fulled)
#define GEM_mouse_relative (this->hidden->mouse_relative)
#define GEM_locked (this->hidden->locked)
+#define GEM_lock_redraw (this->hidden->lock_redraw)
#define GEM_message (this->hidden->message)
#define SDL_modelist (this->hidden->SDL_modelist)
#define GEM_icon (this->hidden->icon)