Skip to content

Commit

Permalink
WinRT: moved the WinRT SDL_VideoDevice out of SDL_WinRTApp
Browse files Browse the repository at this point in the history
This was done to help pave the way for XAML support.
  • Loading branch information
DavidLudwig committed Aug 27, 2013
1 parent 253b9aa commit 6dc2a41
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 14 deletions.
15 changes: 5 additions & 10 deletions src/core/winrt/SDL_winrtapp.cpp
Expand Up @@ -40,6 +40,7 @@ extern "C" {
#include "SDL_winrtapp.h"

extern SDL_Window * WINRT_GlobalSDLWindow;
extern SDL_VideoDevice * WINRT_GlobalSDLVideoDevice;


// Compile-time debugging options:
Expand Down Expand Up @@ -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)
{
}

Expand Down Expand Up @@ -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);
Expand Down Expand Up @@ -487,8 +487,3 @@ SDL_DisplayMode SDL_WinRTApp::CalcCurrentDisplayMode()

return mode;
}

void SDL_WinRTApp::SetSDLVideoDevice(const SDL_VideoDevice * videoDevice)
{
m_sdlVideoDevice = videoDevice;
}
2 changes: 0 additions & 2 deletions src/core/winrt/SDL_winrtapp.h
Expand Up @@ -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:
Expand All @@ -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;
};
11 changes: 9 additions & 2 deletions src/video/winrt/SDL_winrtvideo.cpp
Expand Up @@ -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
Expand All @@ -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);
}

Expand Down Expand Up @@ -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;
}
Expand Down

0 comments on commit 6dc2a41

Please sign in to comment.