WinRT: moved the WinRT SDL_VideoDevice out of SDL_WinRTApp This was done to help pave the way for XAML support.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98
diff --git a/src/core/winrt/SDL_winrtapp.cpp b/src/core/winrt/SDL_winrtapp.cpp
index 2a97fc5..df23ca9 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 a8b5bd3..0b76621 100644
--- a/src/core/winrt/SDL_winrtapp.h
+++ b/src/core/winrt/SDL_winrtapp.h
@@ -16,7 +16,6 @@ internal:
// 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 @@ protected:
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 8d2f612..b2534c6 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;
}