Disable the SDL event pump after the SDL main routine returns, since events will be dispatched by the Cocoa event loop.
--- 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.