diff -r 4488c8602961 src/video/wincommon/SDL_sysevents.c --- a/src/video/wincommon/SDL_sysevents.c Wed Jul 18 14:14:55 2012 -0700 +++ b/src/video/wincommon/SDL_sysevents.c Wed Jul 25 13:58:12 2012 -0500 @@ -310,8 +310,8 @@ if ( WINDIB_FULLSCREEN() ) { appstate |= SDL_APPMOUSEFOCUS; SDL_RestoreDesktopMode(); - /* A fullscreen app gets hidden but will not get a minimize event */ - appstate |= (SDL_APPACTIVE | SDL_APPMOUSEFOCUS); + /* A fullscreen app gets hidden but will not get a minimize event */ + appstate |= (SDL_APPACTIVE | SDL_APPMOUSEFOCUS); #if defined(_WIN32_WCE) LoadAygshell(); if( SHFullScreen ) @@ -576,8 +576,12 @@ case WM_WINDOWPOSCHANGED: { SDL_VideoDevice *this = current_video; POINT pt; + int oldw, oldh; int w, h; + oldw = SDL_bounds.right-SDL_bounds.left; + oldh = SDL_bounds.bottom-SDL_bounds.top; + GetClientRect(SDL_Window, &SDL_bounds); /* avoiding type-punning here... */ @@ -604,10 +608,14 @@ if ( this->input_grab != SDL_GRAB_OFF ) { ClipCursor(&SDL_bounds); } - if ( SDL_PublicSurface && + + /* Only send resize event if the dimensions changed and the surface is resizable. */ + if ( (oldw != w || oldh != h) && + SDL_PublicSurface && (SDL_PublicSurface->flags & SDL_RESIZABLE) ) { SDL_PrivateResize(w, h); } + } break;