# HG changeset patch # User krogoway # Date 1296165510 21600 # Node ID 686d795b1b2936761d865edfa977475bd7d47c1b # Parent 39772ccf7dddd69a539387de5a676c6323b682ba When the last window is closed and the SDL_WINDOWEVENT_CLOSE event is sent, send the SDL_QUIT event. Common.c now destroys the SDL_Window upon a SDL_WINDOWEVENT_CLOSE event to ensure that all windows get closed properly and the new code to handle the last window closes gets executed. diff -r 39772ccf7ddd -r 686d795b1b29 src/events/SDL_windowevents.c --- a/src/events/SDL_windowevents.c Thu Jan 27 14:54:20 2011 -0800 +++ b/src/events/SDL_windowevents.c Thu Jan 27 15:58:30 2011 -0600 @@ -176,6 +176,14 @@ posted = (SDL_PushEvent(&event) > 0); } + + if (windowevent == SDL_WINDOWEVENT_CLOSE) { + if ( !window->prev && !window->next ) { + // This is the last window in the list so send the SDL_QUIT event + SDL_SendQuit(); + } + } + return (posted); } diff -r 39772ccf7ddd -r 686d795b1b29 test/common.c --- a/test/common.c Thu Jan 27 14:54:20 2011 -0800 +++ b/test/common.c Thu Jan 27 15:58:30 2011 -0600 @@ -1038,7 +1038,12 @@ case SDL_WINDOWEVENT: switch (event->window.event) { case SDL_WINDOWEVENT_CLOSE: - *done = 1; + { + SDL_Window *pWindow = SDL_GetWindowFromID(event->window.windowID); + if ( pWindow ) { + SDL_DestroyWindow( pWindow ); + } + } break; } break;