WinRT: fixed a crash in some display orientation hint code

This commit is contained in:
David Ludwig 2013-08-13 20:28:48 -04:00
parent 3dde6e1e9f
commit 45ef345df0

View File

@ -10,6 +10,7 @@ extern "C" {
#include "SDL_events.h" #include "SDL_events.h"
#include "SDL_hints.h" #include "SDL_hints.h"
#include "SDL_log.h" #include "SDL_log.h"
#include "SDL_main.h"
#include "SDL_stdinc.h" #include "SDL_stdinc.h"
#include "SDL_render.h" #include "SDL_render.h"
#include "../SDL_sysvideo.h" #include "../SDL_sysvideo.h"
@ -93,18 +94,20 @@ static void WINRT_SetDisplayOrientationsPreference(void *userdata, const char *n
// Start with no orientation flags, then add each in as they're parsed // Start with no orientation flags, then add each in as they're parsed
// from newValue. // from newValue.
unsigned int orientationFlags = 0; unsigned int orientationFlags = 0;
std::istringstream tokenizer(newValue); if (newValue) {
while (!tokenizer.eof()) { std::istringstream tokenizer(newValue);
std::string orientationName; while (!tokenizer.eof()) {
std::getline(tokenizer, orientationName, ' '); std::string orientationName;
if (orientationName == "LandscapeLeft") { std::getline(tokenizer, orientationName, ' ');
orientationFlags |= (unsigned int) DisplayOrientations::LandscapeFlipped; if (orientationName == "LandscapeLeft") {
} else if (orientationName == "LandscapeRight") { orientationFlags |= (unsigned int) DisplayOrientations::LandscapeFlipped;
orientationFlags |= (unsigned int) DisplayOrientations::Landscape; } else if (orientationName == "LandscapeRight") {
} else if (orientationName == "Portrait") { orientationFlags |= (unsigned int) DisplayOrientations::Landscape;
orientationFlags |= (unsigned int) DisplayOrientations::Portrait; } else if (orientationName == "Portrait") {
} else if (orientationName == "PortraitUpsideDown") { orientationFlags |= (unsigned int) DisplayOrientations::Portrait;
orientationFlags |= (unsigned int) DisplayOrientations::PortraitFlipped; } else if (orientationName == "PortraitUpsideDown") {
orientationFlags |= (unsigned int) DisplayOrientations::PortraitFlipped;
}
} }
} }
@ -245,6 +248,7 @@ void SDL_WinRTApp::Load(Platform::String^ entryPoint)
void SDL_WinRTApp::Run() void SDL_WinRTApp::Run()
{ {
SDL_SetMainReady();
if (SDL_WinRT_main) if (SDL_WinRT_main)
{ {
// TODO, WinRT: pass the C-style main() a reasonably realistic // TODO, WinRT: pass the C-style main() a reasonably realistic