xref: /aosp_15_r20/external/angle/util/ios/ios_main.mm (revision 8975f5c5ed3d1c378011245431ada316dfb6f244)
1*8975f5c5SAndroid Build Coastguard Worker//
2*8975f5c5SAndroid Build Coastguard Worker// Copyright 2020 The ANGLE Project Authors. All rights reserved.
3*8975f5c5SAndroid Build Coastguard Worker// Use of this source code is governed by a BSD-style license that can be
4*8975f5c5SAndroid Build Coastguard Worker// found in the LICENSE file.
5*8975f5c5SAndroid Build Coastguard Worker//
6*8975f5c5SAndroid Build Coastguard Worker
7*8975f5c5SAndroid Build Coastguard Worker// ios_main.mm: Alternative entry point for iOS executables that initializes UIKit before calling
8*8975f5c5SAndroid Build Coastguard Worker// the default entry point.
9*8975f5c5SAndroid Build Coastguard Worker
10*8975f5c5SAndroid Build Coastguard Worker#import <UIKit/UIKit.h>
11*8975f5c5SAndroid Build Coastguard Worker
12*8975f5c5SAndroid Build Coastguard Worker#include <stdio.h>
13*8975f5c5SAndroid Build Coastguard Worker
14*8975f5c5SAndroid Build Coastguard Workerstatic int original_argc;
15*8975f5c5SAndroid Build Coastguard Workerstatic char **original_argv;
16*8975f5c5SAndroid Build Coastguard Worker
17*8975f5c5SAndroid Build Coastguard Workerint main(int argc, char **argv);
18*8975f5c5SAndroid Build Coastguard Worker
19*8975f5c5SAndroid Build Coastguard Worker@interface AngleUtilAppDelegate : UIResponder <UIApplicationDelegate>
20*8975f5c5SAndroid Build Coastguard Worker
21*8975f5c5SAndroid Build Coastguard Worker@property(nullable, nonatomic, strong) UIWindow *window;
22*8975f5c5SAndroid Build Coastguard Worker
23*8975f5c5SAndroid Build Coastguard Worker@end
24*8975f5c5SAndroid Build Coastguard Worker
25*8975f5c5SAndroid Build Coastguard Worker@implementation AngleUtilAppDelegate
26*8975f5c5SAndroid Build Coastguard Worker
27*8975f5c5SAndroid Build Coastguard Worker@synthesize window;
28*8975f5c5SAndroid Build Coastguard Worker
29*8975f5c5SAndroid Build Coastguard Worker- (void)runMain
30*8975f5c5SAndroid Build Coastguard Worker{
31*8975f5c5SAndroid Build Coastguard Worker    exit(main(original_argc, original_argv));
32*8975f5c5SAndroid Build Coastguard Worker}
33*8975f5c5SAndroid Build Coastguard Worker
34*8975f5c5SAndroid Build Coastguard Worker- (BOOL)application:(UIApplication *)application
35*8975f5c5SAndroid Build Coastguard Worker    didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
36*8975f5c5SAndroid Build Coastguard Worker{
37*8975f5c5SAndroid Build Coastguard Worker    self.window                    = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
38*8975f5c5SAndroid Build Coastguard Worker    self.window.rootViewController = [[UIViewController alloc] initWithNibName:nil bundle:nil];
39*8975f5c5SAndroid Build Coastguard Worker    [self.window makeKeyAndVisible];
40*8975f5c5SAndroid Build Coastguard Worker    // We need to return from this function before the app finishes launching, so call main in a
41*8975f5c5SAndroid Build Coastguard Worker    // timer callback afterward.
42*8975f5c5SAndroid Build Coastguard Worker    [NSTimer scheduledTimerWithTimeInterval:0
43*8975f5c5SAndroid Build Coastguard Worker                                     target:self
44*8975f5c5SAndroid Build Coastguard Worker                                   selector:@selector(runMain)
45*8975f5c5SAndroid Build Coastguard Worker                                   userInfo:nil
46*8975f5c5SAndroid Build Coastguard Worker                                    repeats:NO];
47*8975f5c5SAndroid Build Coastguard Worker    return YES;
48*8975f5c5SAndroid Build Coastguard Worker}
49*8975f5c5SAndroid Build Coastguard Worker
50*8975f5c5SAndroid Build Coastguard Worker@end
51*8975f5c5SAndroid Build Coastguard Worker
52*8975f5c5SAndroid Build Coastguard Workerextern "C" int ios_main(int argc, char **argv)
53*8975f5c5SAndroid Build Coastguard Worker{
54*8975f5c5SAndroid Build Coastguard Worker    original_argc = argc;
55*8975f5c5SAndroid Build Coastguard Worker    original_argv = argv;
56*8975f5c5SAndroid Build Coastguard Worker    return UIApplicationMain(argc, argv, nullptr, NSStringFromClass([AngleUtilAppDelegate class]));
57*8975f5c5SAndroid Build Coastguard Worker}
58