diff --git a/src/video/windowsrt/SDL_WinRTApp.cpp b/src/video/windowsrt/SDL_WinRTApp.cpp index bd8592c90..9cb0acba8 100644 --- a/src/video/windowsrt/SDL_WinRTApp.cpp +++ b/src/video/windowsrt/SDL_WinRTApp.cpp @@ -49,6 +49,34 @@ static SDL_WinRT_MainFunction SDL_WinRT_main = nullptr; // SDL_CreateWindow(). SDL_WinRTApp ^ SDL_WinRTGlobalApp = nullptr; +ref class SDLApplicationSource sealed : Windows::ApplicationModel::Core::IFrameworkViewSource +{ +public: + virtual Windows::ApplicationModel::Core::IFrameworkView^ CreateView(); +}; + +IFrameworkView^ SDLApplicationSource::CreateView() +{ + // TODO, WinRT: see if this function (CreateView) can ever get called + // more than once. For now, just prevent it from ever assigning + // SDL_WinRTGlobalApp more than once. + SDL_assert(!SDL_WinRTGlobalApp); + SDL_WinRTApp ^ app = ref new SDL_WinRTApp(); + if (!SDL_WinRTGlobalApp) + { + SDL_WinRTGlobalApp = app; + } + return app; +} + +__declspec(dllexport) int SDL_WinRT_RunApplication(SDL_WinRT_MainFunction mainFunction) +{ + SDL_WinRT_main = mainFunction; + auto direct3DApplicationSource = ref new SDLApplicationSource(); + CoreApplication::Run(direct3DApplicationSource); + return 0; +} + static void WINRT_SetDisplayOrientationsPreference(const char *name, const char *oldValue, const char *newValue) { SDL_assert(SDL_strcmp(name, SDL_HINT_ORIENTATIONS) == 0); @@ -859,25 +887,3 @@ void SDL_WinRTApp::SetSDLVideoDevice(const SDL_VideoDevice * videoDevice) { m_sdlVideoDevice = videoDevice; } - -IFrameworkView^ Direct3DApplicationSource::CreateView() -{ - // TODO, WinRT: see if this function (CreateView) can ever get called - // more than once. For now, just prevent it from ever assigning - // SDL_WinRTGlobalApp more than once. - SDL_assert(!SDL_WinRTGlobalApp); - SDL_WinRTApp ^ app = ref new SDL_WinRTApp(); - if (!SDL_WinRTGlobalApp) - { - SDL_WinRTGlobalApp = app; - } - return app; -} - -__declspec(dllexport) int SDL_WinRT_RunApplication(SDL_WinRT_MainFunction mainFunction) -{ - SDL_WinRT_main = mainFunction; - auto direct3DApplicationSource = ref new Direct3DApplicationSource(); - CoreApplication::Run(direct3DApplicationSource); - return 0; -} diff --git a/src/video/windowsrt/SDL_WinRTApp.h b/src/video/windowsrt/SDL_WinRTApp.h index 0a12e327e..9503af7d7 100644 --- a/src/video/windowsrt/SDL_WinRTApp.h +++ b/src/video/windowsrt/SDL_WinRTApp.h @@ -2,9 +2,6 @@ #include "SDLmain_WinRT_common.h" #include "SDL_winrtvideo.h" -#include - -using namespace Windows::UI::Core; ref class SDL_WinRTApp sealed : public Windows::ApplicationModel::Core::IFrameworkView { @@ -53,9 +50,3 @@ private: const SDL_VideoDevice* m_sdlVideoDevice; bool m_useRelativeMouseMode; }; - -ref class Direct3DApplicationSource sealed : Windows::ApplicationModel::Core::IFrameworkViewSource -{ -public: - virtual Windows::ApplicationModel::Core::IFrameworkView^ CreateView(); -}; diff --git a/src/video/windowsrt/SDL_winrtmouse.cpp b/src/video/windowsrt/SDL_winrtmouse.cpp index 5d6bcc607..e0450c655 100644 --- a/src/video/windowsrt/SDL_winrtmouse.cpp +++ b/src/video/windowsrt/SDL_winrtmouse.cpp @@ -32,6 +32,7 @@ extern "C" { #include "SDL_WinRTApp.h" #include "SDL_winrtmouse.h" +using namespace Windows::UI::Core; using Windows::UI::Core::CoreCursor; extern SDL_WinRTApp ^ SDL_WinRTGlobalApp; diff --git a/src/video/windowsrt/SDL_winrtvideo.cpp b/src/video/windowsrt/SDL_winrtvideo.cpp index 0e640a4ba..846debb50 100644 --- a/src/video/windowsrt/SDL_winrtvideo.cpp +++ b/src/video/windowsrt/SDL_winrtvideo.cpp @@ -43,6 +43,8 @@ extern "C" { #include "SDL_winrtevents_c.h" #include "SDL_winrtmouse.h" +using namespace Windows::UI::Core; + /* On Windows, windows.h defines CreateWindow */ #ifdef CreateWindow #undef CreateWindow