Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
iOS bug #3377: work around bugs in some third party iOS libraries (e.…
…g. Google admob) where they assume the optional UIApplicationDelegate ?window? property always exists and will crash if it doesn?t.
  • Loading branch information
slime73 committed Dec 18, 2016
1 parent f956df2 commit 787a54c
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 1 deletion.
6 changes: 6 additions & 0 deletions src/video/uikit/SDL_uikitappdelegate.h
Expand Up @@ -36,6 +36,12 @@

- (void)hideLaunchScreen;

/* This property is marked as optional, and is only intended to be used when
* the app's UI is storyboard-based. SDL is not storyboard-based, however
* several major third-party ad APIs (e.g. Google admob) incorrectly assume this
* property always exists, and will crash if it doesn't. */
@property (nonatomic) UIWindow *window;

@end

/* vi: set ts=4 sw=4 expandtab: */
22 changes: 21 additions & 1 deletion src/video/uikit/SDL_uikitappdelegate.m
Expand Up @@ -422,6 +422,26 @@ - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(
return YES;
}

- (UIWindow *)window
{
SDL_VideoDevice *_this = SDL_GetVideoDevice();
if (_this) {
SDL_Window *window = NULL;
for (window = _this->windows; window != NULL; window = window->next) {
SDL_WindowData *data = (__bridge SDL_WindowData *) window->driverdata;
if (data != nil) {
return data.uiwindow;
}
}
}
return nil;
}

- (void)setWindow:(UIWindow *)window
{
/* Do nothing. */
}

- (void)applicationWillTerminate:(UIApplication *)application
{
SDL_SendAppEvent(SDL_APP_TERMINATING);
Expand Down Expand Up @@ -467,7 +487,7 @@ - (void)applicationWillResignActive:(UIApplication*)application
SDL_VideoDevice *_this = SDL_GetVideoDevice();
if (_this) {
SDL_Window *window;
for (window = _this->windows; window != nil; window = window->next) {
for (window = _this->windows; window != NULL; window = window->next) {
SDL_SendWindowEvent(window, SDL_WINDOWEVENT_FOCUS_LOST, 0, 0);
SDL_SendWindowEvent(window, SDL_WINDOWEVENT_MINIMIZED, 0, 0);
}
Expand Down

0 comments on commit 787a54c

Please sign in to comment.