Prechádzať zdrojové kódy

Merge pull request #355 from dducharme/next

For BB10 paying attention to the WIDTH and HEIGHT environment variables ...
Sean Paul Taylor 13 rokov pred
rodič
commit
a1ee62c854
1 zmenil súbory, kde vykonal 71 pridanie a 58 odobranie
  1. 71 58
      gameplay/src/PlatformQNX.cpp

+ 71 - 58
gameplay/src/PlatformQNX.cpp

@@ -512,7 +512,9 @@ Platform* Platform::create(Game* game, void* attachToWindow)
 #endif
     int screenSwapInterval = WINDOW_VSYNC ? 1 : 0;
     int screenTransparency = SCREEN_TRANSPARENCY_NONE;
-    int angle = atoi(getenv("ORIENTATION"));
+
+	char *width_str = getenv("WIDTH");
+	char *height_str = getenv("HEIGHT");
 
     // Hard-coded to (0,0).
     int windowPosition[] =
@@ -579,56 +581,74 @@ Platform* Platform::create(Game* game, void* attachToWindow)
         goto error;
     }
 
-    screen_display_t screen_display;
-    rc = screen_get_window_property_pv(__screenWindow, SCREEN_PROPERTY_DISPLAY, (void **)&screen_display);
-    if (rc)
-    {
-        perror("screen_get_window_property_pv(SCREEN_PROPERTY_DISPLAY)");
-        goto error;
-    }
-
-    screen_display_mode_t screen_mode;
-    rc = screen_get_display_property_pv(screen_display, SCREEN_PROPERTY_MODE, (void**)&screen_mode);
-    if (rc)
-    {
-        perror("screen_get_display_property_pv(SCREEN_PROPERTY_MODE)");
-        goto error;
-    }
-
-    int size[2];
-    rc = screen_get_window_property_iv(__screenWindow, SCREEN_PROPERTY_BUFFER_SIZE, size);
-    if (rc)
-    {
-        perror("screen_get_window_property_iv(SCREEN_PROPERTY_BUFFER_SIZE)");
-        goto error;
-    }
-
-    __screenWindowSize[0] = size[0];
-    __screenWindowSize[1] = size[1];
-
-    if ((angle == 0) || (angle == 180))
-    {
-        if (((screen_mode.width > screen_mode.height) && (size[0] < size[1])) ||
-            ((screen_mode.width < screen_mode.height) && (size[0] > size[1])))
-        {
-            __screenWindowSize[1] = size[0];
-            __screenWindowSize[0] = size[1];
-        }
-    }
-    else if ((angle == 90) || (angle == 270))
-    {
-        if (((screen_mode.width > screen_mode.height) && (size[0] > size[1])) ||
-            ((screen_mode.width < screen_mode.height) && (size[0] < size[1])))
-        {
-            __screenWindowSize[1] = size[0];
-            __screenWindowSize[0] = size[1];
-        }
-    }
-    else
-    {
-        perror("Navigator returned an unexpected orientation angle.");
-        goto error;
-    }
+	if (width_str && height_str)
+	{
+		__screenWindowSize[0] = atoi(width_str);
+		__screenWindowSize[1] = atoi(height_str);
+	}
+	else
+	{
+		int angle = atoi(getenv("ORIENTATION"));
+
+		screen_display_t screen_display;
+		rc = screen_get_window_property_pv(__screenWindow, SCREEN_PROPERTY_DISPLAY, (void **)&screen_display);
+		if (rc)
+		{
+			perror("screen_get_window_property_pv(SCREEN_PROPERTY_DISPLAY)");
+			goto error;
+		}
+
+		screen_display_mode_t screen_mode;
+		rc = screen_get_display_property_pv(screen_display, SCREEN_PROPERTY_MODE, (void**)&screen_mode);
+		if (rc)
+		{
+			perror("screen_get_display_property_pv(SCREEN_PROPERTY_MODE)");
+			goto error;
+		}
+
+		int size[2];
+		rc = screen_get_window_property_iv(__screenWindow, SCREEN_PROPERTY_BUFFER_SIZE, size);
+		if (rc)
+		{
+			perror("screen_get_window_property_iv(SCREEN_PROPERTY_BUFFER_SIZE)");
+			goto error;
+		}
+
+		__screenWindowSize[0] = size[0];
+		__screenWindowSize[1] = size[1];
+
+		if ((angle == 0) || (angle == 180))
+		{
+			if (((screen_mode.width > screen_mode.height) && (size[0] < size[1])) ||
+				((screen_mode.width < screen_mode.height) && (size[0] > size[1])))
+			{
+				__screenWindowSize[1] = size[0];
+				__screenWindowSize[0] = size[1];
+			}
+		}
+		else if ((angle == 90) || (angle == 270))
+		{
+			if (((screen_mode.width > screen_mode.height) && (size[0] > size[1])) ||
+				((screen_mode.width < screen_mode.height) && (size[0] < size[1])))
+			{
+				__screenWindowSize[1] = size[0];
+				__screenWindowSize[0] = size[1];
+			}
+		}
+		else
+		{
+			perror("Navigator returned an unexpected orientation angle.");
+			goto error;
+		}
+
+
+	    rc = screen_set_window_property_iv(__screenWindow, SCREEN_PROPERTY_ROTATION, &angle);
+	    if (rc)
+	    {
+	        perror("screen_set_window_property_iv(SCREEN_PROPERTY_ROTATION)");
+	        goto error;
+	    }
+	}
 
     rc = screen_set_window_property_iv(__screenWindow, SCREEN_PROPERTY_BUFFER_SIZE, __screenWindowSize);
     if (rc)
@@ -637,13 +657,6 @@ Platform* Platform::create(Game* game, void* attachToWindow)
         goto error;
     }
 
-    rc = screen_set_window_property_iv(__screenWindow, SCREEN_PROPERTY_ROTATION, &angle);
-    if (rc)
-    {
-        perror("screen_set_window_property_iv(SCREEN_PROPERTY_ROTATION)");
-        goto error;
-    }
-
     if (windowPosition[0] != 0 || windowPosition[1] != 0)
     {
         rc = screen_set_window_property_iv(__screenWindow, SCREEN_PROPERTY_POSITION, windowPosition);