Disable the SDL event pump after the SDL main routine returns, since events will be dispatched by the Cocoa event loop.

This commit is contained in:
Sam Lantinga 2012-06-25 11:10:34 -04:00
parent 909cf0f0b4
commit 655622dc62
3 changed files with 15 additions and 0 deletions

View file

@ -43,6 +43,7 @@ extern "C" {
#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);

View file

@ -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 @@ static void SDL_IdleTimerDisabledChanged(const char *name, const char *oldValue,
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

View file

@ -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.