Disable the SDL event pump after the SDL main routine returns, since events will be dispatched by the Cocoa event loop.
authorSam Lantinga <slouken@libsdl.org>
Mon, 25 Jun 2012 11:10:34 -0400
changeset 6346 56871d364efc
parent 6345 b4bbb23d1b4b
child 6348 049721824c2e
Disable the SDL event pump after the SDL main routine returns, since events will be dispatched by the Cocoa event loop.
include/SDL_system.h
src/video/uikit/SDL_uikitappdelegate.m
src/video/uikit/SDL_uikitevents.m
--- a/include/SDL_system.h	Sat Jun 23 06:46:06 2012 -0400
+++ b/include/SDL_system.h	Mon Jun 25 11:10:34 2012 -0400
@@ -43,6 +43,7 @@
 #include "SDL_video.h"
 
 extern DECLSPEC int SDLCALL SDL_iPhoneSetAnimationCallback(SDL_Window * window, int interval, void (*callback)(void*), void *callbackParam);
+extern DECLSPEC void SDLCALL SDL_iPhoneSetEventPump(SDL_bool enabled);
 
 extern DECLSPEC int SDLCALL SDL_iPhoneKeyboardShow(SDL_Window * window);
 extern DECLSPEC int SDLCALL SDL_iPhoneKeyboardHide(SDL_Window * window);
--- a/src/video/uikit/SDL_uikitappdelegate.m	Sat Jun 23 06:46:06 2012 -0400
+++ b/src/video/uikit/SDL_uikitappdelegate.m	Mon Jun 25 11:10:34 2012 -0400
@@ -26,6 +26,7 @@
 #import "SDL_assert.h"
 #import "SDL_hints.h"
 #import "../../SDL_hints_c.h"
+#import "SDL_system.h"
 
 #import "SDL_uikitappdelegate.h"
 #import "SDL_uikitopenglview.h"
@@ -105,7 +106,9 @@
     SDL_RegisterHintChangedCb(SDL_HINT_IDLE_TIMER_DISABLED, &SDL_IdleTimerDisabledChanged);
 
     /* run the user's application, passing argc and argv */
+    SDL_iPhoneSetEventPump(SDL_TRUE);
     exit_status = SDL_main(forward_argc, forward_argv);
+    SDL_iPhoneSetEventPump(SDL_FALSE);
 
     /* exit, passing the return status from the user's application */
     // We don't actually exit to support applications that do setup in
--- a/src/video/uikit/SDL_uikitevents.m	Sat Jun 23 06:46:06 2012 -0400
+++ b/src/video/uikit/SDL_uikitevents.m	Mon Jun 25 11:10:34 2012 -0400
@@ -30,9 +30,20 @@
 #import <Foundation/Foundation.h>
 #include "jumphack.h"
 
+static BOOL UIKit_EventPumpEnabled = YES;
+
+void
+SDL_iPhoneSetEventPump(SDL_bool enabled)
+{
+    UIKit_EventPumpEnabled = enabled;
+}
+
 void
 UIKit_PumpEvents(_THIS)
 {
+    if (!UIKit_EventPumpEnabled)
+        return;
+
     /*
         When the user presses the 'home' button on the iPod
         the application exits -- immediatly.