WinRT: fixed a crash in some display orientation hint code
authorDavid Ludwig <dludwig@pobox.com>
Tue, 13 Aug 2013 20:28:48 -0400
changeset 8481 e412893178a8
parent 8480 733f78caa9cb
child 8482 eb0b00e7519e
WinRT: fixed a crash in some display orientation hint code
src/video/windowsrt/SDL_WinRTApp.cpp
--- a/src/video/windowsrt/SDL_WinRTApp.cpp	Tue Aug 13 20:28:10 2013 -0400
+++ b/src/video/windowsrt/SDL_WinRTApp.cpp	Tue Aug 13 20:28:48 2013 -0400
@@ -10,6 +10,7 @@
 #include "SDL_events.h"
 #include "SDL_hints.h"
 #include "SDL_log.h"
+#include "SDL_main.h"
 #include "SDL_stdinc.h"
 #include "SDL_render.h"
 #include "../SDL_sysvideo.h"
@@ -93,18 +94,20 @@
     // Start with no orientation flags, then add each in as they're parsed
     // from newValue.
     unsigned int orientationFlags = 0;
-    std::istringstream tokenizer(newValue);
-    while (!tokenizer.eof()) {
-        std::string orientationName;
-        std::getline(tokenizer, orientationName, ' ');
-        if (orientationName == "LandscapeLeft") {
-            orientationFlags |= (unsigned int) DisplayOrientations::LandscapeFlipped;
-        } else if (orientationName == "LandscapeRight") {
-            orientationFlags |= (unsigned int) DisplayOrientations::Landscape;
-        } else if (orientationName == "Portrait") {
-            orientationFlags |= (unsigned int) DisplayOrientations::Portrait;
-        } else if (orientationName == "PortraitUpsideDown") {
-            orientationFlags |= (unsigned int) DisplayOrientations::PortraitFlipped;
+    if (newValue) {
+        std::istringstream tokenizer(newValue);
+        while (!tokenizer.eof()) {
+            std::string orientationName;
+            std::getline(tokenizer, orientationName, ' ');
+            if (orientationName == "LandscapeLeft") {
+                orientationFlags |= (unsigned int) DisplayOrientations::LandscapeFlipped;
+            } else if (orientationName == "LandscapeRight") {
+                orientationFlags |= (unsigned int) DisplayOrientations::Landscape;
+            } else if (orientationName == "Portrait") {
+                orientationFlags |= (unsigned int) DisplayOrientations::Portrait;
+            } else if (orientationName == "PortraitUpsideDown") {
+                orientationFlags |= (unsigned int) DisplayOrientations::PortraitFlipped;
+            }
         }
     }
 
@@ -245,6 +248,7 @@
 
 void SDL_WinRTApp::Run()
 {
+    SDL_SetMainReady();
     if (SDL_WinRT_main)
     {
         // TODO, WinRT: pass the C-style main() a reasonably realistic