From ba3ae581abdce5efd70cc42fa95967a0d2ecbe85 Mon Sep 17 00:00:00 2001 From: dhewg Date: Thu, 29 Dec 2011 20:48:41 +0100 Subject: [PATCH] Implement SDL_QUIT event Shut down gracefully upon WM quit event. --- neo/sys/events.cpp | 41 ++++++++++++++++++++++++----------------- 1 file changed, 24 insertions(+), 17 deletions(-) diff --git a/neo/sys/events.cpp b/neo/sys/events.cpp index 34abb127..8d9eaa02 100644 --- a/neo/sys/events.cpp +++ b/neo/sys/events.cpp @@ -236,6 +236,24 @@ static byte mapkey(SDLKey key) { return 0; } +static void PushConsoleEvent(const char *s) { + char *b; + size_t len; + + len = strlen(s) + 1; + b = (char *)Mem_Alloc(len); + strcpy(b, s); + + SDL_Event event; + + event.type = SDL_USEREVENT; + event.user.code = SE_CONSOLE; + event.user.data1 = (void *)len; + event.user.data2 = b; + + SDL_PushEvent(&event); +} + static void GrabInput(bool grab, bool hide_cursor, bool set_state) { #if defined(ID_DEDICATED) return; @@ -436,6 +454,10 @@ sysEvent_t Sys_GetEvent() { return res; + case SDL_QUIT: + PushConsoleEvent("quit"); + return res_none; + case SDL_USEREVENT: switch (ev.user.code) { case SE_CONSOLE: @@ -479,23 +501,8 @@ Sys_GenerateEvents void Sys_GenerateEvents() { char *s = Sys_ConsoleInput(); - if (s) { - char *b; - size_t len; - - len = strlen(s) + 1; - b = (char *)Mem_Alloc(len); - strcpy(b, s); - - SDL_Event event; - - event.type = SDL_USEREVENT; - event.user.code = SE_CONSOLE; - event.user.data1 = (void *)len; - event.user.data2 = b; - - SDL_PushEvent(&event); - } + if (s) + PushConsoleEvent(s); SDL_PumpEvents(); }