Updated support for external video output on the iPad
authorSam Lantinga <slouken@libsdl.org>
Sat, 29 Sep 2012 00:17:34 -0700
changeset 6511 41253d43a2cf
parent 6510 32432af683cf
child 6512 4beb596ccfae
Updated support for external video output on the iPad
src/video/uikit/SDL_uikitwindow.m
--- a/src/video/uikit/SDL_uikitwindow.m	Sat Sep 29 00:01:32 2012 -0700
+++ b/src/video/uikit/SDL_uikitwindow.m	Sat Sep 29 00:17:34 2012 -0700
@@ -75,26 +75,31 @@
         /* Get frame dimensions in pixels */
         int width = (int)(bounds.size.width * displaymodedata->scale);
         int height = (int)(bounds.size.height * displaymodedata->scale);
-
-        /* We can pick either width or height here and we'll rotate the
-           screen to match, so we pick the closest to what we wanted.
-         */
-        if (window->w >= window->h) {
-            if (width > height) {
-                window->w = width;
-                window->h = height;
+        
+        if ([UIScreen mainScreen] == displaydata->uiscreen) {
+            /* We can pick either width or height here and we'll rotate the
+             screen to match, so we pick the closest to what we wanted.
+             */
+            if (window->w >= window->h) {
+                if (width > height) {
+                    window->w = width;
+                    window->h = height;
+                } else {
+                    window->w = height;
+                    window->h = width;
+                }
             } else {
-                window->w = height;
-                window->h = width;
+                if (width > height) {
+                    window->w = height;
+                    window->h = width;
+                } else {
+                    window->w = width;
+                    window->h = height;
+                }
             }
         } else {
-            if (width > height) {
-                window->w = height;
-                window->h = width;
-            } else {
-                window->w = width;
-                window->h = height;
-            }
+            window->w = width;
+            window->h = height;
         }
     }
 
@@ -106,27 +111,27 @@
     // SDL_WINDOW_BORDERLESS controls whether status bar is hidden.
     // This is only set if the window is on the main screen. Other screens
     //  just force the window to have the borderless flag.
-    if ([UIScreen mainScreen] != displaydata->uiscreen) {
-        window->flags &= ~SDL_WINDOW_RESIZABLE;  // window is NEVER resizeable
-        window->flags &= ~SDL_WINDOW_INPUT_FOCUS;  // never has input focus
-        window->flags |= SDL_WINDOW_BORDERLESS;  // never has a status bar.
-    } else {
+    if ([UIScreen mainScreen] == displaydata->uiscreen) {
         window->flags |= SDL_WINDOW_INPUT_FOCUS;  // always has input focus
-
+        
         if (window->flags & (SDL_WINDOW_FULLSCREEN|SDL_WINDOW_BORDERLESS)) {
             [UIApplication sharedApplication].statusBarHidden = YES;
         } else {
             [UIApplication sharedApplication].statusBarHidden = NO;
         }
+    } else {
+        window->flags &= ~SDL_WINDOW_RESIZABLE;  // window is NEVER resizeable
+        window->flags &= ~SDL_WINDOW_INPUT_FOCUS;  // never has input focus
+        window->flags |= SDL_WINDOW_BORDERLESS;  // never has a status bar.
+    }
 
-        // The View Controller will handle rotating the view when the
-        //  device orientation changes. This will trigger resize events, if
-        //  appropriate.
-        SDL_uikitviewcontroller *controller;
-        controller = [SDL_uikitviewcontroller alloc];
-        data->viewcontroller = [controller initWithSDLWindow:window];
-        [data->viewcontroller setTitle:@"SDL App"];  // !!! FIXME: hook up SDL_SetWindowTitle()
-    }
+    // The View Controller will handle rotating the view when the
+    //  device orientation changes. This will trigger resize events, if
+    //  appropriate.
+    SDL_uikitviewcontroller *controller;
+    controller = [SDL_uikitviewcontroller alloc];
+    data->viewcontroller = [controller initWithSDLWindow:window];
+    [data->viewcontroller setTitle:@"SDL App"];  // !!! FIXME: hook up SDL_SetWindowTitle()
 
     return 0;
 }
@@ -147,13 +152,6 @@
         return -1;
     }
 
-    // Non-mainscreen windows must be force to borderless, as there's no
-    //  status bar there, and we want to get the right dimensions later in
-    //  this function.
-    if (external) {
-        window->flags |= SDL_WINDOW_BORDERLESS;
-    }
-
     // If monitor has a resolution of 0x0 (hasn't been explicitly set by the
     //  user, so it's in standby), try to force the display to a resolution
     //  that most closely matches the desired window size.