Don't run the game loop while a messagebox is up
This commit is contained in:
parent
4b042442c8
commit
7694b94cfc
3 changed files with 20 additions and 4 deletions
|
@ -22,6 +22,8 @@
|
|||
|
||||
#if SDL_VIDEO_DRIVER_UIKIT
|
||||
|
||||
extern SDL_bool UIKit_ShowingMessageBox();
|
||||
|
||||
extern int UIKit_ShowMessageBox(const SDL_MessageBoxData *messageboxdata, int *buttonid);
|
||||
|
||||
#endif /* SDL_VIDEO_DRIVER_UIKIT */
|
||||
|
|
|
@ -28,6 +28,7 @@
|
|||
|
||||
/* Display a UIKit message box */
|
||||
|
||||
static SDL_bool s_showingMessageBox = SDL_FALSE;
|
||||
|
||||
@interface UIKit_UIAlertViewDelegate : NSObject <UIAlertViewDelegate> {
|
||||
@private
|
||||
|
@ -60,6 +61,12 @@
|
|||
@end // UIKit_UIAlertViewDelegate
|
||||
|
||||
|
||||
SDL_bool
|
||||
UIKit_ShowingMessageBox()
|
||||
{
|
||||
return s_showingMessageBox;
|
||||
}
|
||||
|
||||
int
|
||||
UIKit_ShowMessageBox(const SDL_MessageBoxData *messageboxdata, int *buttonid)
|
||||
{
|
||||
|
@ -86,9 +93,12 @@ UIKit_ShowMessageBox(const SDL_MessageBoxData *messageboxdata, int *buttonid)
|
|||
|
||||
// Run the main event loop until the alert has finished
|
||||
// Note that this needs to be done on the main thread
|
||||
s_showingMessageBox = SDL_TRUE;
|
||||
while (clicked == messageboxdata->numbuttons) {
|
||||
[[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate distantFuture]];
|
||||
}
|
||||
s_showingMessageBox = SDL_FALSE;
|
||||
|
||||
*buttonid = messageboxdata->buttons[clicked].buttonid;
|
||||
|
||||
[pool release];
|
||||
|
|
|
@ -22,9 +22,10 @@
|
|||
|
||||
#if SDL_VIDEO_DRIVER_UIKIT
|
||||
|
||||
#import <QuartzCore/QuartzCore.h>
|
||||
#import <OpenGLES/EAGLDrawable.h>
|
||||
#import "SDL_uikitopenglview.h"
|
||||
#include <QuartzCore/QuartzCore.h>
|
||||
#include <OpenGLES/EAGLDrawable.h>
|
||||
#include "SDL_uikitopenglview.h"
|
||||
#include "SDL_uikitmessagebox.h"
|
||||
|
||||
|
||||
@implementation SDL_uikitopenglview
|
||||
|
@ -180,7 +181,10 @@
|
|||
|
||||
- (void)doLoop:(id)sender
|
||||
{
|
||||
animationCallback(animationCallbackParam);
|
||||
// Don't run the game loop while a messagebox is up
|
||||
if (!UIKit_ShowingMessageBox()) {
|
||||
animationCallback(animationCallbackParam);
|
||||
}
|
||||
}
|
||||
|
||||
- (void)setCurrentContext
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue