mirror of https://github.com/encounter/SDL.git
Only watch for display connect/disconnect events while the video subsystem is initialized
This commit is contained in:
parent
7991cc38bc
commit
b546db2f85
|
@ -349,14 +349,6 @@ SDL_LoadLaunchImageNamed(NSString *name, int screenh)
|
||||||
|
|
||||||
- (void)postFinishLaunch
|
- (void)postFinishLaunch
|
||||||
{
|
{
|
||||||
NSNotificationCenter *center = [NSNotificationCenter defaultCenter];
|
|
||||||
|
|
||||||
[center addObserver:self selector:@selector(handleScreenDidConnectNotification:)
|
|
||||||
name:UIScreenDidConnectNotification object:nil];
|
|
||||||
[center addObserver:self selector:@selector(handleScreenDidDisconnectNotification:)
|
|
||||||
name:UIScreenDidDisconnectNotification object:nil];
|
|
||||||
|
|
||||||
|
|
||||||
/* Hide the launch screen the next time the run loop is run. SDL apps will
|
/* Hide the launch screen the next time the run loop is run. SDL apps will
|
||||||
* have a chance to load resources while the launch screen is still up. */
|
* have a chance to load resources while the launch screen is still up. */
|
||||||
[self performSelector:@selector(hideLaunchScreen) withObject:nil afterDelay:0.0];
|
[self performSelector:@selector(hideLaunchScreen) withObject:nil afterDelay:0.0];
|
||||||
|
@ -528,18 +520,6 @@ SDL_LoadLaunchImageNamed(NSString *name, int screenh)
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
- (void)handleScreenDidConnectNotification:(NSNotification*)aNotification
|
|
||||||
{
|
|
||||||
UIScreen *uiscreen = [aNotification object];
|
|
||||||
UIKit_AddDisplay(uiscreen, SDL_TRUE);
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)handleScreenDidDisconnectNotification:(NSNotification*)aNotification
|
|
||||||
{
|
|
||||||
UIScreen *uiscreen = [aNotification object];
|
|
||||||
UIKit_DelDisplay(uiscreen);
|
|
||||||
}
|
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|
||||||
#endif /* SDL_VIDEO_DRIVER_UIKIT */
|
#endif /* SDL_VIDEO_DRIVER_UIKIT */
|
||||||
|
|
|
@ -181,6 +181,44 @@
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|
||||||
|
@interface SDL_DisplayWatch : NSObject
|
||||||
|
@end
|
||||||
|
|
||||||
|
@implementation SDL_DisplayWatch
|
||||||
|
|
||||||
|
+ (void)start
|
||||||
|
{
|
||||||
|
NSNotificationCenter *center = [NSNotificationCenter defaultCenter];
|
||||||
|
|
||||||
|
[center addObserver:self selector:@selector(screenConnected:)
|
||||||
|
name:UIScreenDidConnectNotification object:nil];
|
||||||
|
[center addObserver:self selector:@selector(screenDisconnected:)
|
||||||
|
name:UIScreenDidDisconnectNotification object:nil];
|
||||||
|
}
|
||||||
|
|
||||||
|
+ (void)stop
|
||||||
|
{
|
||||||
|
NSNotificationCenter *center = [NSNotificationCenter defaultCenter];
|
||||||
|
|
||||||
|
[center removeObserver:self
|
||||||
|
name:UIScreenDidConnectNotification object:nil];
|
||||||
|
[center removeObserver:self
|
||||||
|
name:UIScreenDidDisconnectNotification object:nil];
|
||||||
|
}
|
||||||
|
|
||||||
|
+ (void)screenConnected:(NSNotification*)notification
|
||||||
|
{
|
||||||
|
UIScreen *uiscreen = [notification object];
|
||||||
|
UIKit_AddDisplay(uiscreen, SDL_TRUE);
|
||||||
|
}
|
||||||
|
|
||||||
|
+ (void)screenDisconnected:(NSNotification*)notification
|
||||||
|
{
|
||||||
|
UIScreen *uiscreen = [notification object];
|
||||||
|
UIKit_DelDisplay(uiscreen);
|
||||||
|
}
|
||||||
|
|
||||||
|
@end
|
||||||
|
|
||||||
static int
|
static int
|
||||||
UIKit_AllocateDisplayModeData(SDL_DisplayMode * mode,
|
UIKit_AllocateDisplayModeData(SDL_DisplayMode * mode,
|
||||||
|
@ -349,6 +387,8 @@ UIKit_InitModes(_THIS)
|
||||||
#if !TARGET_OS_TV
|
#if !TARGET_OS_TV
|
||||||
SDL_OnApplicationDidChangeStatusBarOrientation();
|
SDL_OnApplicationDidChangeStatusBarOrientation();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
[SDL_DisplayWatch start];
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -482,6 +522,8 @@ UIKit_GetDisplayUsableBounds(_THIS, SDL_VideoDisplay * display, SDL_Rect * rect)
|
||||||
void
|
void
|
||||||
UIKit_QuitModes(_THIS)
|
UIKit_QuitModes(_THIS)
|
||||||
{
|
{
|
||||||
|
[SDL_DisplayWatch stop];
|
||||||
|
|
||||||
/* Release Objective-C objects, so higher level doesn't free() them. */
|
/* Release Objective-C objects, so higher level doesn't free() them. */
|
||||||
int i, j;
|
int i, j;
|
||||||
@autoreleasepool {
|
@autoreleasepool {
|
||||||
|
|
Loading…
Reference in New Issue