mirror of
				https://github.com/Ryujinx/SDL.git
				synced 2025-11-04 08:45:00 +00:00 
			
		
		
		
	tvOS launch images are now properly supported.
This commit is contained in:
		
							parent
							
								
									a8b033d7c4
								
							
						
					
					
						commit
						77bacfd72d
					
				| 
						 | 
					@ -24,6 +24,7 @@
 | 
				
			||||||
@interface SDLLaunchScreenController : UIViewController
 | 
					@interface SDLLaunchScreenController : UIViewController
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- (instancetype)init;
 | 
					- (instancetype)init;
 | 
				
			||||||
 | 
					- (instancetype)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil;
 | 
				
			||||||
- (void)loadView;
 | 
					- (void)loadView;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@end
 | 
					@end
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -155,29 +155,29 @@ SDL_LoadLaunchImageNamed(NSString *name, int screenh)
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (!self.view) {
 | 
					    if (!self.view) {
 | 
				
			||||||
#if !TARGET_OS_TV
 | 
					 | 
				
			||||||
        NSArray *launchimages = [bundle objectForInfoDictionaryKey:@"UILaunchImages"];
 | 
					        NSArray *launchimages = [bundle objectForInfoDictionaryKey:@"UILaunchImages"];
 | 
				
			||||||
        UIInterfaceOrientation curorient = [UIApplication sharedApplication].statusBarOrientation;
 | 
					 | 
				
			||||||
        NSString *imagename = nil;
 | 
					        NSString *imagename = nil;
 | 
				
			||||||
        UIImage *image = nil;
 | 
					        UIImage *image = nil;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        int screenw = (int)([UIScreen mainScreen].bounds.size.width + 0.5);
 | 
					        int screenw = (int)([UIScreen mainScreen].bounds.size.width + 0.5);
 | 
				
			||||||
        int screenh = (int)([UIScreen mainScreen].bounds.size.height + 0.5);
 | 
					        int screenh = (int)([UIScreen mainScreen].bounds.size.height + 0.5);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if !TARGET_OS_TV
 | 
				
			||||||
 | 
					        UIInterfaceOrientation curorient = [UIApplication sharedApplication].statusBarOrientation;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        /* We always want portrait-oriented size, to match UILaunchImageSize. */
 | 
					        /* We always want portrait-oriented size, to match UILaunchImageSize. */
 | 
				
			||||||
        if (screenw > screenh) {
 | 
					        if (screenw > screenh) {
 | 
				
			||||||
            int width = screenw;
 | 
					            int width = screenw;
 | 
				
			||||||
            screenw = screenh;
 | 
					            screenw = screenh;
 | 
				
			||||||
            screenh = width;
 | 
					            screenh = width;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        /* Xcode 5 introduced a dictionary of launch images in Info.plist. */
 | 
					        /* Xcode 5 introduced a dictionary of launch images in Info.plist. */
 | 
				
			||||||
        if (launchimages) {
 | 
					        if (launchimages) {
 | 
				
			||||||
            for (NSDictionary *dict in launchimages) {
 | 
					            for (NSDictionary *dict in launchimages) {
 | 
				
			||||||
                UIInterfaceOrientationMask orientmask = UIInterfaceOrientationMaskPortrait | UIInterfaceOrientationMaskPortraitUpsideDown;
 | 
					                NSString *minversion = dict[@"UILaunchImageMinimumOSVersion"];
 | 
				
			||||||
                NSString *minversion   = dict[@"UILaunchImageMinimumOSVersion"];
 | 
					                NSString *sizestring = dict[@"UILaunchImageSize"];
 | 
				
			||||||
                NSString *sizestring   = dict[@"UILaunchImageSize"];
 | 
					 | 
				
			||||||
                NSString *orientstring = dict[@"UILaunchImageOrientation"];
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
                /* Ignore this image if the current version is too low. */
 | 
					                /* Ignore this image if the current version is too low. */
 | 
				
			||||||
                if (minversion && !UIKit_IsSystemVersionAtLeast(minversion.doubleValue)) {
 | 
					                if (minversion && !UIKit_IsSystemVersionAtLeast(minversion.doubleValue)) {
 | 
				
			||||||
| 
						 | 
					@ -192,6 +192,10 @@ SDL_LoadLaunchImageNamed(NSString *name, int screenh)
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if !TARGET_OS_TV
 | 
				
			||||||
 | 
					                UIInterfaceOrientationMask orientmask = UIInterfaceOrientationMaskPortrait | UIInterfaceOrientationMaskPortraitUpsideDown;
 | 
				
			||||||
 | 
					                NSString *orientstring = dict[@"UILaunchImageOrientation"];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                if (orientstring) {
 | 
					                if (orientstring) {
 | 
				
			||||||
                    if ([orientstring isEqualToString:@"PortraitUpsideDown"]) {
 | 
					                    if ([orientstring isEqualToString:@"PortraitUpsideDown"]) {
 | 
				
			||||||
                        orientmask = UIInterfaceOrientationMaskPortraitUpsideDown;
 | 
					                        orientmask = UIInterfaceOrientationMaskPortraitUpsideDown;
 | 
				
			||||||
| 
						 | 
					@ -208,6 +212,7 @@ SDL_LoadLaunchImageNamed(NSString *name, int screenh)
 | 
				
			||||||
                if ((orientmask & (1 << curorient)) == 0) {
 | 
					                if ((orientmask & (1 << curorient)) == 0) {
 | 
				
			||||||
                    continue;
 | 
					                    continue;
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                imagename = dict[@"UILaunchImageName"];
 | 
					                imagename = dict[@"UILaunchImageName"];
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
| 
						 | 
					@ -215,7 +220,9 @@ SDL_LoadLaunchImageNamed(NSString *name, int screenh)
 | 
				
			||||||
            if (imagename) {
 | 
					            if (imagename) {
 | 
				
			||||||
                image = [UIImage imageNamed:imagename];
 | 
					                image = [UIImage imageNamed:imagename];
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        } else {
 | 
					        }
 | 
				
			||||||
 | 
					#if !TARGET_OS_TV
 | 
				
			||||||
 | 
					        else {
 | 
				
			||||||
            imagename = [bundle objectForInfoDictionaryKey:@"UILaunchImageFile"];
 | 
					            imagename = [bundle objectForInfoDictionaryKey:@"UILaunchImageFile"];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            if (imagename) {
 | 
					            if (imagename) {
 | 
				
			||||||
| 
						 | 
					@ -226,11 +233,13 @@ SDL_LoadLaunchImageNamed(NSString *name, int screenh)
 | 
				
			||||||
                image = SDL_LoadLaunchImageNamed(@"Default", screenh);
 | 
					                image = SDL_LoadLaunchImageNamed(@"Default", screenh);
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (image) {
 | 
					        if (image) {
 | 
				
			||||||
            UIImageView *view = [[UIImageView alloc] initWithFrame:[UIScreen mainScreen].bounds];
 | 
					            UIImageView *view = [[UIImageView alloc] initWithFrame:[UIScreen mainScreen].bounds];
 | 
				
			||||||
            UIImageOrientation imageorient = UIImageOrientationUp;
 | 
					            UIImageOrientation imageorient = UIImageOrientationUp;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if !TARGET_OS_TV
 | 
				
			||||||
            /* Bugs observed / workaround tested in iOS 8.3, 7.1, and 6.1. */
 | 
					            /* Bugs observed / workaround tested in iOS 8.3, 7.1, and 6.1. */
 | 
				
			||||||
            if (UIInterfaceOrientationIsLandscape(curorient)) {
 | 
					            if (UIInterfaceOrientationIsLandscape(curorient)) {
 | 
				
			||||||
                if (atleastiOS8 && image.size.width < image.size.height) {
 | 
					                if (atleastiOS8 && image.size.width < image.size.height) {
 | 
				
			||||||
| 
						 | 
					@ -254,15 +263,13 @@ SDL_LoadLaunchImageNamed(NSString *name, int screenh)
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            /* Create the properly oriented image. */
 | 
					            /* Create the properly oriented image. */
 | 
				
			||||||
            view.image = [[UIImage alloc] initWithCGImage:image.CGImage scale:image.scale orientation:imageorient];
 | 
					            view.image = [[UIImage alloc] initWithCGImage:image.CGImage scale:image.scale orientation:imageorient];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            self.view = view;
 | 
					            self.view = view;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
#else /* !TARGET_OS_TV */
 | 
					 | 
				
			||||||
        return nil;
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return self;
 | 
					    return self;
 | 
				
			||||||
| 
						 | 
					@ -363,10 +370,11 @@ SDL_LoadLaunchImageNamed(NSString *name, int screenh)
 | 
				
			||||||
     * called), so we show the launch screen programmatically until the first
 | 
					     * called), so we show the launch screen programmatically until the first
 | 
				
			||||||
     * time events are pumped. */
 | 
					     * time events are pumped. */
 | 
				
			||||||
    UIViewController *vc = nil;
 | 
					    UIViewController *vc = nil;
 | 
				
			||||||
 | 
					    NSString *screenname = nil;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /* TODO: Try to load the 1080p launch image on tvOS. */
 | 
					    /* tvOS only uses a plain launch image. */
 | 
				
			||||||
#if !TARGET_OS_TV
 | 
					#if !TARGET_OS_TV
 | 
				
			||||||
    NSString *screenname = [bundle objectForInfoDictionaryKey:@"UILaunchStoryboardName"];
 | 
					    screenname = [bundle objectForInfoDictionaryKey:@"UILaunchStoryboardName"];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (screenname && UIKit_IsSystemVersionAtLeast(8.0)) {
 | 
					    if (screenname && UIKit_IsSystemVersionAtLeast(8.0)) {
 | 
				
			||||||
        @try {
 | 
					        @try {
 | 
				
			||||||
| 
						 | 
					@ -380,11 +388,11 @@ SDL_LoadLaunchImageNamed(NSString *name, int screenh)
 | 
				
			||||||
            /* Do nothing (there's more code to execute below). */
 | 
					            /* Do nothing (there's more code to execute below). */
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (vc == nil) {
 | 
					    if (vc == nil) {
 | 
				
			||||||
        vc = [[SDLLaunchScreenController alloc] initWithNibName:screenname bundle:bundle];
 | 
					        vc = [[SDLLaunchScreenController alloc] initWithNibName:screenname bundle:bundle];
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (vc.view) {
 | 
					    if (vc.view) {
 | 
				
			||||||
        launchWindow = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
 | 
					        launchWindow = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in a new issue