From 6dc2a410eb33ecb3fd1894d9d219a5cd91686bc7 Mon Sep 17 00:00:00 2001 From: David Ludwig Date: Tue, 27 Aug 2013 12:13:45 -0400 Subject: [PATCH] WinRT: moved the WinRT SDL_VideoDevice out of SDL_WinRTApp This was done to help pave the way for XAML support. --- src/core/winrt/SDL_winrtapp.cpp | 15 +++++---------- src/core/winrt/SDL_winrtapp.h | 2 -- src/video/winrt/SDL_winrtvideo.cpp | 11 +++++++++-- 3 files changed, 14 insertions(+), 14 deletions(-) diff --git a/src/core/winrt/SDL_winrtapp.cpp b/src/core/winrt/SDL_winrtapp.cpp index 2a97fc5fced01..df23ca9c2656f 100644 --- a/src/core/winrt/SDL_winrtapp.cpp +++ b/src/core/winrt/SDL_winrtapp.cpp @@ -40,6 +40,7 @@ extern "C" { #include "SDL_winrtapp.h" extern SDL_Window * WINRT_GlobalSDLWindow; +extern SDL_VideoDevice * WINRT_GlobalSDLVideoDevice; // Compile-time debugging options: @@ -145,8 +146,7 @@ static void WINRT_SetDisplayOrientationsPreference(void *userdata, const char *n SDL_WinRTApp::SDL_WinRTApp() : m_windowClosed(false), - m_windowVisible(true), - m_sdlVideoDevice(NULL) + m_windowVisible(true) { } @@ -306,9 +306,9 @@ void SDL_WinRTApp::OnWindowSizeChanged(CoreWindow^ sender, WindowSizeChangedEven // size, and the Direct3D 11.1 renderer wouldn't resize its swap // chain. SDL_DisplayMode resizedDisplayMode = CalcCurrentDisplayMode(); - m_sdlVideoDevice->displays[0].current_mode = resizedDisplayMode; - m_sdlVideoDevice->displays[0].desktop_mode = resizedDisplayMode; - m_sdlVideoDevice->displays[0].display_modes[0] = resizedDisplayMode; + WINRT_GlobalSDLVideoDevice->displays[0].current_mode = resizedDisplayMode; + WINRT_GlobalSDLVideoDevice->displays[0].desktop_mode = resizedDisplayMode; + WINRT_GlobalSDLVideoDevice->displays[0].display_modes[0] = resizedDisplayMode; // Send the window-resize event to the rest of SDL, and to apps: const int windowWidth = (int) ceil(args->Size.Width); @@ -487,8 +487,3 @@ SDL_DisplayMode SDL_WinRTApp::CalcCurrentDisplayMode() return mode; } - -void SDL_WinRTApp::SetSDLVideoDevice(const SDL_VideoDevice * videoDevice) -{ - m_sdlVideoDevice = videoDevice; -} diff --git a/src/core/winrt/SDL_winrtapp.h b/src/core/winrt/SDL_winrtapp.h index a8b5bd343bb6e..0b76621f6aa14 100644 --- a/src/core/winrt/SDL_winrtapp.h +++ b/src/core/winrt/SDL_winrtapp.h @@ -16,7 +16,6 @@ ref class SDL_WinRTApp sealed : public Windows::ApplicationModel::Core::IFramewo // SDL-specific methods SDL_DisplayMode CalcCurrentDisplayMode(); void PumpEvents(); - void SetSDLVideoDevice(const SDL_VideoDevice * videoDevice); Windows::Foundation::Point TransformCursor(Windows::Foundation::Point rawPosition); protected: @@ -40,5 +39,4 @@ ref class SDL_WinRTApp sealed : public Windows::ApplicationModel::Core::IFramewo private: bool m_windowClosed; bool m_windowVisible; - const SDL_VideoDevice* m_sdlVideoDevice; }; diff --git a/src/video/winrt/SDL_winrtvideo.cpp b/src/video/winrt/SDL_winrtvideo.cpp index 8d2f612df34e1..b2534c6ae1023 100644 --- a/src/video/winrt/SDL_winrtvideo.cpp +++ b/src/video/winrt/SDL_winrtvideo.cpp @@ -79,6 +79,11 @@ struct SDL_WindowData SDL_Window * WINRT_GlobalSDLWindow = NULL; +/* The global, WinRT, video device. +*/ +SDL_VideoDevice * WINRT_GlobalSDLVideoDevice = NULL; + + /* WinRT driver bootstrap functions */ static int @@ -90,7 +95,9 @@ WINRT_Available(void) static void WINRT_DeleteDevice(SDL_VideoDevice * device) { - SDL_WinRTGlobalApp->SetSDLVideoDevice(NULL); + if (device == WINRT_GlobalSDLVideoDevice) { + WINRT_GlobalSDLVideoDevice = NULL; + } SDL_free(device); } @@ -118,7 +125,7 @@ WINRT_CreateDevice(int devindex) device->PumpEvents = WINRT_PumpEvents; device->GetWindowWMInfo = WINRT_GetWindowWMInfo; device->free = WINRT_DeleteDevice; - SDL_WinRTGlobalApp->SetSDLVideoDevice(device); + WINRT_GlobalSDLVideoDevice = NULL; return device; }