Commit e253e1d9 authored by krogoway's avatar krogoway

When the last window is closed and the SDL_WINDOWEVENT_CLOSE event is sent,...

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.
parent be54c8a0
...@@ -176,6 +176,14 @@ SDL_SendWindowEvent(SDL_Window * window, Uint8 windowevent, int data1, ...@@ -176,6 +176,14 @@ SDL_SendWindowEvent(SDL_Window * window, Uint8 windowevent, int data1,
posted = (SDL_PushEvent(&event) > 0); 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); return (posted);
} }
......
...@@ -1038,7 +1038,12 @@ CommonEvent(CommonState * state, SDL_Event * event, int *done) ...@@ -1038,7 +1038,12 @@ CommonEvent(CommonState * state, SDL_Event * event, int *done)
case SDL_WINDOWEVENT: case SDL_WINDOWEVENT:
switch (event->window.event) { switch (event->window.event) {
case SDL_WINDOWEVENT_CLOSE: case SDL_WINDOWEVENT_CLOSE:
*done = 1; {
SDL_Window *pWindow = SDL_GetWindowFromID(event->window.windowID);
if ( pWindow ) {
SDL_DestroyWindow( pWindow );
}
}
break; break;
} }
break; break;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment