Added support for mixing Qt and SDL on iOS You should call SDL_SetMainReady(), and then customize the QIOSApplicationDelegate like this, in your application code: /* Additional support for applications mixing Qt and SDL */ @interface QIOSApplicationDelegate : UIResponder <UIApplicationDelegate> @end extern "C" { void SDL_OnApplicationWillResignActive(); void SDL_OnApplicationDidEnterBackground(); void SDL_OnApplicationWillEnterForeground(); void SDL_OnApplicationDidBecomeActive(); } @interface QIOSApplicationDelegate (SDL) - (void)applicationWillResignActive:(UIApplication*)application; - (void)applicationDidEnterBackground:(UIApplication*)application; - (void)applicationWillEnterForeground:(UIApplication*)application; - (void)applicationDidBecomeActive:(UIApplication*)application; @end @implementation QIOSApplicationDelegate (SDL) - (void)applicationWillResignActive:(UIApplication*)application { SDL_OnApplicationWillResignActive(); } - (void)applicationDidEnterBackground:(UIApplication*)application { SDL_OnApplicationDidEnterBackground(); } - (void)applicationWillEnterForeground:(UIApplication*)application { SDL_OnApplicationWillEnterForeground(); } - (void)applicationDidBecomeActive:(UIApplication*)application { SDL_OnApplicationDidBecomeActive(); } @end // QIOSApplicationDelegate
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151
diff --git a/src/video/SDL_sysvideo.h b/src/video/SDL_sysvideo.h
index 1827019..74bd572 100644
--- a/src/video/SDL_sysvideo.h
+++ b/src/video/SDL_sysvideo.h
@@ -418,6 +418,13 @@ extern SDL_bool SDL_ShouldAllowTopmost(void);
extern float SDL_ComputeDiagonalDPI(int hpix, int vpix, float hinches, float vinches);
+extern void SDL_OnApplicationWillTerminate();
+extern void SDL_OnApplicationDidReceiveMemoryWarning();
+extern void SDL_OnApplicationWillResignActive();
+extern void SDL_OnApplicationDidEnterBackground();
+extern void SDL_OnApplicationWillEnterForeground();
+extern void SDL_OnApplicationDidBecomeActive();
+
#endif /* SDL_sysvideo_h_ */
/* vi: set ts=4 sw=4 expandtab: */
diff --git a/src/video/SDL_video.c b/src/video/SDL_video.c
index 8a76c19..db67ff9 100644
--- a/src/video/SDL_video.c
+++ b/src/video/SDL_video.c
@@ -3857,4 +3857,51 @@ SDL_ComputeDiagonalDPI(int hpix, int vpix, float hinches, float vinches)
SDL_sqrt((double)den2));
}
+void SDL_OnApplicationWillTerminate()
+{
+ SDL_SendAppEvent(SDL_APP_TERMINATING);
+}
+
+void SDL_OnApplicationDidReceiveMemoryWarning()
+{
+ SDL_SendAppEvent(SDL_APP_LOWMEMORY);
+}
+
+void SDL_OnApplicationWillResignActive()
+{
+ SDL_VideoDevice *_this = SDL_GetVideoDevice();
+ if (_this) {
+ SDL_Window *window;
+ 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);
+ }
+ }
+ SDL_SendAppEvent(SDL_APP_WILLENTERBACKGROUND);
+}
+
+void SDL_OnApplicationDidEnterBackground()
+{
+ SDL_SendAppEvent(SDL_APP_DIDENTERBACKGROUND);
+}
+
+void SDL_OnApplicationWillEnterForeground()
+{
+ SDL_SendAppEvent(SDL_APP_WILLENTERFOREGROUND);
+}
+
+void SDL_OnApplicationDidBecomeActive()
+{
+ SDL_SendAppEvent(SDL_APP_DIDENTERFOREGROUND);
+
+ SDL_VideoDevice *_this = SDL_GetVideoDevice();
+ if (_this) {
+ SDL_Window *window;
+ for (window = _this->windows; window != NULL; window = window->next) {
+ SDL_SendWindowEvent(window, SDL_WINDOWEVENT_FOCUS_GAINED, 0, 0);
+ SDL_SendWindowEvent(window, SDL_WINDOWEVENT_RESTORED, 0, 0);
+ }
+ }
+}
+
/* vi: set ts=4 sw=4 expandtab: */
diff --git a/src/video/uikit/SDL_uikitappdelegate.m b/src/video/uikit/SDL_uikitappdelegate.m
index 2c4b5c8..17dc4d9 100644
--- a/src/video/uikit/SDL_uikitappdelegate.m
+++ b/src/video/uikit/SDL_uikitappdelegate.m
@@ -442,16 +442,6 @@ SDL_LoadLaunchImageNamed(NSString *name, int screenh)
/* Do nothing. */
}
-- (void)applicationWillTerminate:(UIApplication *)application
-{
- SDL_SendAppEvent(SDL_APP_TERMINATING);
-}
-
-- (void)applicationDidReceiveMemoryWarning:(UIApplication *)application
-{
- SDL_SendAppEvent(SDL_APP_LOWMEMORY);
-}
-
#if !TARGET_OS_TV
- (void)application:(UIApplication *)application didChangeStatusBarOrientation:(UIInterfaceOrientation)oldStatusBarOrientation
{
@@ -482,41 +472,34 @@ SDL_LoadLaunchImageNamed(NSString *name, int screenh)
}
#endif
+- (void)applicationWillTerminate:(UIApplication *)application
+{
+ SDL_OnApplicationWillTerminate();
+}
+
+- (void)applicationDidReceiveMemoryWarning:(UIApplication *)application
+{
+ SDL_OnApplicationDidReceiveMemoryWarning();
+}
+
- (void)applicationWillResignActive:(UIApplication*)application
{
- SDL_VideoDevice *_this = SDL_GetVideoDevice();
- if (_this) {
- SDL_Window *window;
- 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);
- }
- }
- SDL_SendAppEvent(SDL_APP_WILLENTERBACKGROUND);
+ SDL_OnApplicationWillResignActive();
}
- (void)applicationDidEnterBackground:(UIApplication*)application
{
- SDL_SendAppEvent(SDL_APP_DIDENTERBACKGROUND);
+ SDL_OnApplicationDidEnterBackground();
}
- (void)applicationWillEnterForeground:(UIApplication*)application
{
- SDL_SendAppEvent(SDL_APP_WILLENTERFOREGROUND);
+ SDL_OnApplicationWillEnterForeground();
}
- (void)applicationDidBecomeActive:(UIApplication*)application
{
- SDL_SendAppEvent(SDL_APP_DIDENTERFOREGROUND);
-
- SDL_VideoDevice *_this = SDL_GetVideoDevice();
- if (_this) {
- SDL_Window *window;
- for (window = _this->windows; window != nil; window = window->next) {
- SDL_SendWindowEvent(window, SDL_WINDOWEVENT_FOCUS_GAINED, 0, 0);
- SDL_SendWindowEvent(window, SDL_WINDOWEVENT_RESTORED, 0, 0);
- }
- }
+ SDL_OnApplicationDidBecomeActive();
}
- (void)sendDropFileForURL:(NSURL *)url