From 13c72d0e1fbbf28e7518fb8f7a79e0a292296adf Mon Sep 17 00:00:00 2001 From: David Ludwig Date: Sun, 28 Oct 2012 23:20:18 -0400 Subject: [PATCH] WinRT: explicitly allowed only one window at a time, pending multimonitor support (in SDL/WinRT) --- src/video/windowsrt/SDL_WinRTApp.cpp | 5 +++++ src/video/windowsrt/SDL_WinRTApp.h | 1 + src/video/windowsrt/SDL_winrtvideo.cpp | 14 +++++++++++--- 3 files changed, 17 insertions(+), 3 deletions(-) diff --git a/src/video/windowsrt/SDL_WinRTApp.cpp b/src/video/windowsrt/SDL_WinRTApp.cpp index e53e0fca5..45b1ba30b 100644 --- a/src/video/windowsrt/SDL_WinRTApp.cpp +++ b/src/video/windowsrt/SDL_WinRTApp.cpp @@ -198,6 +198,11 @@ SDL_DisplayMode SDL_WinRTApp::GetMainDisplayMode() return mode; } +bool SDL_WinRTApp::HasSDLWindowData() const +{ + return (m_sdlWindowData != NULL); +} + void SDL_WinRTApp::SetSDLWindowData(const SDL_WindowData* windowData) { m_sdlWindowData = windowData; diff --git a/src/video/windowsrt/SDL_WinRTApp.h b/src/video/windowsrt/SDL_WinRTApp.h index f7fc29b40..68daeb3b8 100644 --- a/src/video/windowsrt/SDL_WinRTApp.h +++ b/src/video/windowsrt/SDL_WinRTApp.h @@ -23,6 +23,7 @@ ref class SDL_WinRTApp sealed : public Windows::ApplicationModel::Core::IFramewo // SDL-specific methods SDL_DisplayMode GetMainDisplayMode(); void PumpEvents(); + bool HasSDLWindowData() const; void SetSDLWindowData(const SDL_WindowData* windowData); protected: diff --git a/src/video/windowsrt/SDL_winrtvideo.cpp b/src/video/windowsrt/SDL_winrtvideo.cpp index e69826383..ec67c9570 100644 --- a/src/video/windowsrt/SDL_winrtvideo.cpp +++ b/src/video/windowsrt/SDL_winrtvideo.cpp @@ -137,8 +137,13 @@ WINRT_VideoQuit(_THIS) int WINRT_CreateWindow(_THIS, SDL_Window * window) { - // TODO, WinRT: modify WINRT_Createwindow to ensure that, for now, only one window gets created - // (until multimonitor support is added to the WinRT port). + // Make sure that only one window gets created, at least until multimonitor + // support is added. + if (SDL_WinRTGlobalApp->HasSDLWindowData()) + { + SDL_SetError("WinRT only supports one window"); + return -1; + } SDL_WindowData *data; data = (SDL_WindowData *) SDL_calloc(1, sizeof(*data)); @@ -163,7 +168,10 @@ WINRT_CreateWindow(_THIS, SDL_Window * window) void WINRT_DestroyWindow(_THIS, SDL_Window * window) { - SDL_WinRTGlobalApp->SetSDLWindowData(NULL); + if (SDL_WinRTGlobalApp->HasSDLWindowData()) + { + SDL_WinRTGlobalApp->SetSDLWindowData(NULL); + } }