Merged various WinRT build fixes
authorDavid Ludwig <dludwig@pobox.com>
Wed, 12 Mar 2014 12:12:20 -0400
changeset 8612 24d36bb9c7af
parent 8611 a762dfc67e1a (current diff)
parent 8610 670e049dfc29 (diff)
child 8613 ab7b2a148374
Merged various WinRT build fixes
VisualC-WinPhone/SDL/SDL-WinPhone_VS2012.vcxproj
VisualC-WinPhone/SDL/SDL-WinPhone_VS2012.vcxproj.filters
VisualC-WinRT/SDL/SDL-WinRT_VS2012.vcxproj
VisualC-WinRT/SDL/SDL-WinRT_VS2012.vcxproj.filters
src/core/winrt/SDL_winrtapp_xaml.cpp
src/render/direct3d11/SDL_render_d3d11.c
src/render/direct3d11/SDL_render_d3d11_winrthelpers.cpp
src/render/direct3d11/SDL_render_d3d11_winrthelpers_cpp.h
src/render/direct3d11/SDL_render_winrt.cpp
--- a/VisualC-WinPhone/SDL/SDL-WinPhone_VS2012.vcxproj	Wed Mar 12 11:57:15 2014 -0400
+++ b/VisualC-WinPhone/SDL/SDL-WinPhone_VS2012.vcxproj	Wed Mar 12 12:12:20 2014 -0400
@@ -218,7 +218,7 @@
     <ClInclude Include="..\..\src\haptic\SDL_syshaptic.h" />
     <ClInclude Include="..\..\src\joystick\SDL_joystick_c.h" />
     <ClInclude Include="..\..\src\joystick\SDL_sysjoystick.h" />
-    <ClInclude Include="..\..\src\render\direct3d11\SDL_render_d3d11_winrthelpers_cpp.h" />
+    <ClInclude Include="..\..\src\render\direct3d11\SDL_render_winrt.h" />
     <ClInclude Include="..\..\src\render\mmx.h" />
     <ClInclude Include="..\..\src\render\SDL_d3dmath.h" />
     <ClInclude Include="..\..\src\render\SDL_sysrender.h" />
@@ -320,12 +320,7 @@
     <ClCompile Include="..\..\src\power\SDL_power.c" />
     <ClCompile Include="..\..\src\power\winrt\SDL_syspower.cpp" />
     <ClCompile Include="..\..\src\render\direct3d11\SDL_render_d3d11.c" />
-    <ClCompile Include="..\..\src\render\direct3d11\SDL_render_d3d11_winrthelpers.cpp">
-      <CompileAsWinRT Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">true</CompileAsWinRT>
-      <CompileAsWinRT Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">true</CompileAsWinRT>
-      <CompileAsWinRT Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</CompileAsWinRT>
-      <CompileAsWinRT Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</CompileAsWinRT>
-    </ClCompile>
+    <ClCompile Include="..\..\src\render\direct3d11\SDL_render_winrt.cpp" />
     <ClCompile Include="..\..\src\render\SDL_d3dmath.c" />
     <ClCompile Include="..\..\src\render\SDL_render.c" />
     <ClCompile Include="..\..\src\render\SDL_yuv_mmx.c" />
--- a/VisualC-WinPhone/SDL/SDL-WinPhone_VS2012.vcxproj.filters	Wed Mar 12 11:57:15 2014 -0400
+++ b/VisualC-WinPhone/SDL/SDL-WinPhone_VS2012.vcxproj.filters	Wed Mar 12 12:12:20 2014 -0400
@@ -339,9 +339,6 @@
     <ClInclude Include="..\..\include\SDL_filesystem.h">
       <Filter>Header Files</Filter>
     </ClInclude>
-    <ClInclude Include="..\..\src\render\direct3d11\SDL_render_d3d11_winrthelpers_cpp.h">
-      <Filter>Source Files</Filter>
-    </ClInclude>
     <ClInclude Include="..\..\src\render\SDL_d3dmath.h">
       <Filter>Source Files</Filter>
     </ClInclude>
@@ -354,6 +351,9 @@
     <ClInclude Include="..\..\src\dynapi\SDL_dynapi_procs.h">
       <Filter>Source Files</Filter>
     </ClInclude>
+    <ClInclude Include="..\..\src\render\direct3d11\SDL_render_winrt.h">
+      <Filter>Source Files</Filter>
+    </ClInclude>
   </ItemGroup>
   <ItemGroup>
     <ClCompile Include="..\..\src\atomic\SDL_atomic.c">
@@ -623,9 +623,6 @@
     <ClCompile Include="..\..\src\render\direct3d11\SDL_render_d3d11.c">
       <Filter>Source Files</Filter>
     </ClCompile>
-    <ClCompile Include="..\..\src\render\direct3d11\SDL_render_d3d11_winrthelpers.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
     <ClCompile Include="..\..\src\render\SDL_d3dmath.c">
       <Filter>Source Files</Filter>
     </ClCompile>
@@ -638,5 +635,8 @@
     <ClCompile Include="..\..\src\power\SDL_power.c">
       <Filter>Source Files</Filter>
     </ClCompile>
+    <ClCompile Include="..\..\src\render\direct3d11\SDL_render_winrt.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
   </ItemGroup>
 </Project>
\ No newline at end of file
--- a/VisualC-WinRT/SDL/SDL-WinRT_VS2012.vcxproj	Wed Mar 12 11:57:15 2014 -0400
+++ b/VisualC-WinRT/SDL/SDL-WinRT_VS2012.vcxproj	Wed Mar 12 12:12:20 2014 -0400
@@ -100,14 +100,7 @@
     <ClCompile Include="..\..\src\power\SDL_power.c" />
     <ClCompile Include="..\..\src\power\winrt\SDL_syspower.cpp" />
     <ClCompile Include="..\..\src\render\direct3d11\SDL_render_d3d11.c" />
-    <ClCompile Include="..\..\src\render\direct3d11\SDL_render_d3d11_winrthelpers.cpp">
-      <CompileAsWinRT Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">true</CompileAsWinRT>
-      <CompileAsWinRT Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">true</CompileAsWinRT>
-      <CompileAsWinRT Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</CompileAsWinRT>
-      <CompileAsWinRT Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</CompileAsWinRT>
-      <CompileAsWinRT Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</CompileAsWinRT>
-      <CompileAsWinRT Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</CompileAsWinRT>
-    </ClCompile>
+    <ClCompile Include="..\..\src\render\direct3d11\SDL_render_winrt.cpp" />
     <ClCompile Include="..\..\src\render\opengles2\SDL_render_gles2.c" />
     <ClCompile Include="..\..\src\render\opengles2\SDL_shaders_gles2.c" />
     <ClCompile Include="..\..\src\render\SDL_d3dmath.c" />
@@ -292,7 +285,7 @@
     <ClInclude Include="..\..\src\joystick\SDL_gamecontrollerdb.h" />
     <ClInclude Include="..\..\src\joystick\SDL_joystick_c.h" />
     <ClInclude Include="..\..\src\joystick\SDL_sysjoystick.h" />
-    <ClInclude Include="..\..\src\render\direct3d11\SDL_render_d3d11_winrthelpers_cpp.h" />
+    <ClInclude Include="..\..\src\render\direct3d11\SDL_render_winrt.h" />
     <ClInclude Include="..\..\src\render\mmx.h" />
     <ClInclude Include="..\..\src\render\opengles2\SDL_gles2funcs.h" />
     <ClInclude Include="..\..\src\render\opengles2\SDL_shaders_gles2.h" />
--- a/VisualC-WinRT/SDL/SDL-WinRT_VS2012.vcxproj.filters	Wed Mar 12 11:57:15 2014 -0400
+++ b/VisualC-WinRT/SDL/SDL-WinRT_VS2012.vcxproj.filters	Wed Mar 12 12:12:20 2014 -0400
@@ -280,19 +280,19 @@
     <ClCompile Include="..\..\src\render\direct3d11\SDL_render_d3d11.c">
       <Filter>Source Files</Filter>
     </ClCompile>
-    <ClCompile Include="..\..\src\render\direct3d11\SDL_render_d3d11_winrthelpers.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
     <ClCompile Include="..\..\src\render\SDL_d3dmath.c">
       <Filter>Source Files</Filter>
     </ClCompile>
     <ClCompile Include="..\..\src\dynapi\SDL_dynapi.c">
       <Filter>Source Files</Filter>
     </ClCompile>
-    <ClCompile Include="..\..\src\power\winrt\SDL_syspower.cpp">
+    <ClCompile Include="..\..\src\power\SDL_power.c">
       <Filter>Source Files</Filter>
     </ClCompile>
-    <ClCompile Include="..\..\src\power\SDL_power.c">
+    <ClCompile Include="..\..\src\render\direct3d11\SDL_render_winrt.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\src\power\winrt\SDL_syspower.cpp">
       <Filter>Source Files</Filter>
     </ClCompile>
   </ItemGroup>
@@ -651,9 +651,6 @@
     <ClInclude Include="..\..\src\SDL_internal.h">
       <Filter>Source Files</Filter>
     </ClInclude>
-    <ClInclude Include="..\..\src\render\direct3d11\SDL_render_d3d11_winrthelpers_cpp.h">
-      <Filter>Source Files</Filter>
-    </ClInclude>
     <ClInclude Include="..\..\src\render\SDL_d3dmath.h">
       <Filter>Source Files</Filter>
     </ClInclude>
@@ -666,6 +663,9 @@
     <ClInclude Include="..\..\src\dynapi\SDL_dynapi_procs.h">
       <Filter>Source Files</Filter>
     </ClInclude>
+    <ClInclude Include="..\..\src\render\direct3d11\SDL_render_winrt.h">
+      <Filter>Source Files</Filter>
+    </ClInclude>
   </ItemGroup>
   <ItemGroup>
     <Filter Include="Header Files">
--- a/Xcode/SDL/SDL.xcodeproj/project.pbxproj	Wed Mar 12 11:57:15 2014 -0400
+++ b/Xcode/SDL/SDL.xcodeproj/project.pbxproj	Wed Mar 12 12:12:20 2014 -0400
@@ -2773,8 +2773,8 @@
 		00CFA622106A567900758660 /* Release */ = {
 			isa = XCBuildConfiguration;
 			buildSettings = {
-				DYLIB_COMPATIBILITY_VERSION = 1;
-				DYLIB_CURRENT_VERSION = 1;
+				DYLIB_COMPATIBILITY_VERSION = 1.0.0;
+				DYLIB_CURRENT_VERSION = 3.1.0;
 				FRAMEWORK_VERSION = A;
 				HEADER_SEARCH_PATHS = /usr/X11R6/include;
 				INFOPLIST_FILE = "Info-Framework.plist";
@@ -2827,8 +2827,8 @@
 		00CFA628106A568900758660 /* Debug */ = {
 			isa = XCBuildConfiguration;
 			buildSettings = {
-				DYLIB_COMPATIBILITY_VERSION = 1;
-				DYLIB_CURRENT_VERSION = 1;
+				DYLIB_COMPATIBILITY_VERSION = 1.0.0;
+				DYLIB_CURRENT_VERSION = 3.1.0;
 				FRAMEWORK_VERSION = A;
 				HEADER_SEARCH_PATHS = /usr/X11R6/include;
 				INFOPLIST_FILE = "Info-Framework.plist";
--- a/src/core/winrt/SDL_winrtapp_xaml.cpp	Wed Mar 12 11:57:15 2014 -0400
+++ b/src/core/winrt/SDL_winrtapp_xaml.cpp	Wed Mar 12 12:12:20 2014 -0400
@@ -1,159 +1,160 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2013 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/* Windows includes */
-#include <agile.h>
-#include <Windows.h>
-
-#if WINAPI_FAMILY == WINAPI_FAMILY_APP
-#include <windows.ui.xaml.media.dxinterop.h>
-#endif
-
-
-/* SDL includes */
-#include "../../SDL_internal.h"
-#include "SDL.h"
-#include "../../video/winrt/SDL_winrtevents_c.h"
-#include "../../video/winrt/SDL_winrtvideo_cpp.h"
-#include "SDL_winrtapp_common.h"
-#include "SDL_winrtapp_xaml.h"
-
-
-
-/* SDL-internal globals: */
-SDL_bool WINRT_XAMLWasEnabled = SDL_FALSE;
-
-#if WINAPI_FAMILY == WINAPI_FAMILY_APP
-extern "C" ISwapChainBackgroundPanelNative * WINRT_GlobalSwapChainBackgroundPanelNative = NULL;
-static Windows::Foundation::EventRegistrationToken	WINRT_XAMLAppEventToken;
-#endif
-
-
-/*
- * Input event handlers (XAML)
- */
-#if WINAPI_FAMILY == WINAPI_FAMILY_APP
-
-static void
-WINRT_OnPointerPressedViaXAML(Platform::Object^ sender, Windows::UI::Xaml::Input::PointerRoutedEventArgs^ args)
-{
-    WINRT_ProcessPointerPressedEvent(WINRT_GlobalSDLWindow, args->GetCurrentPoint(nullptr));
-}
-
-static void
-WINRT_OnPointerMovedViaXAML(Platform::Object^ sender, Windows::UI::Xaml::Input::PointerRoutedEventArgs^ args)
-{
-    WINRT_ProcessPointerMovedEvent(WINRT_GlobalSDLWindow, args->GetCurrentPoint(nullptr));
-}
-
-static void
-WINRT_OnPointerReleasedViaXAML(Platform::Object^ sender, Windows::UI::Xaml::Input::PointerRoutedEventArgs^ args)
-{
-    WINRT_ProcessPointerReleasedEvent(WINRT_GlobalSDLWindow, args->GetCurrentPoint(nullptr));
-}
-
-static void
-WINRT_OnPointerWheelChangedViaXAML(Platform::Object^ sender, Windows::UI::Xaml::Input::PointerRoutedEventArgs^ args)
-{
-    WINRT_ProcessPointerWheelChangedEvent(WINRT_GlobalSDLWindow, args->GetCurrentPoint(nullptr));
-}
-
-#endif // WINAPI_FAMILY == WINAPI_FAMILY_APP
-
-
-/*
- * XAML-to-SDL Rendering Callback
- */
-#if WINAPI_FAMILY == WINAPI_FAMILY_APP
-
-static void
-WINRT_OnRenderViaXAML(_In_ Platform::Object^ sender, _In_ Platform::Object^ args)
-{
-    WINRT_CycleXAMLThread();
-}
-
-#endif // WINAPI_FAMILY == WINAPI_FAMILY_APP
-
-
-/*
- * SDL + XAML Initialization
- */
-
-int
-SDL_WinRTInitXAMLApp(int (*mainFunction)(int, char **), void * backgroundPanelAsIInspectable)
-{
-#if WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP
-    return SDL_SetError("XAML support is not yet available in Windows Phone.");
-#else
-    // Declare C++/CX namespaces:
-    using namespace Platform;
-    using namespace Windows::Foundation;
-    using namespace Windows::UI::Core;
-    using namespace Windows::UI::Xaml;
-    using namespace Windows::UI::Xaml::Controls;
-    using namespace Windows::UI::Xaml::Input;
-    using namespace Windows::UI::Xaml::Media;
-
-    // Make sure we have a valid XAML element (to draw onto):
-    if ( ! backgroundPanelAsIInspectable) {
-        return SDL_SetError("'backgroundPanelAsIInspectable' can't be NULL");
-    }
-
-    Platform::Object ^ backgroundPanel = reinterpret_cast<Object ^>((IInspectable *) backgroundPanelAsIInspectable);
-    SwapChainBackgroundPanel ^swapChainBackgroundPanel = dynamic_cast<SwapChainBackgroundPanel ^>(backgroundPanel);
-    if ( ! swapChainBackgroundPanel) {
-        return SDL_SetError("An unknown or unsupported type of XAML control was specified.");
-    }
-
-    // Setup event handlers:
-    swapChainBackgroundPanel->PointerPressed += ref new PointerEventHandler(WINRT_OnPointerPressedViaXAML);
-    swapChainBackgroundPanel->PointerReleased += ref new PointerEventHandler(WINRT_OnPointerReleasedViaXAML);
-    swapChainBackgroundPanel->PointerWheelChanged += ref new PointerEventHandler(WINRT_OnPointerWheelChangedViaXAML);
-    swapChainBackgroundPanel->PointerMoved += ref new PointerEventHandler(WINRT_OnPointerMovedViaXAML);
-
-    // Setup for rendering:
-    IInspectable *panelInspectable = (IInspectable*) reinterpret_cast<IInspectable*>(swapChainBackgroundPanel);
-    panelInspectable->QueryInterface(__uuidof(ISwapChainBackgroundPanelNative), (void **)&WINRT_GlobalSwapChainBackgroundPanelNative);
-
-    WINRT_XAMLAppEventToken = CompositionTarget::Rendering::add(ref new EventHandler<Object^>(WINRT_OnRenderViaXAML));
-
-    // Make sure the app is ready to call the SDL-centric main() function:
-    WINRT_SDLAppEntryPoint = mainFunction;
-    SDL_SetMainReady();
-
-    // Make sure video-init knows that we're initializing XAML:
-    SDL_bool oldXAMLWasEnabledValue = WINRT_XAMLWasEnabled;
-    WINRT_XAMLWasEnabled = SDL_TRUE;
-
-    // Make sure video modes are detected now, while we still have access to the WinRT
-    // CoreWindow.  WinRT will not allow the app's CoreWindow to be accessed via the
-    // SDL/WinRT thread.
-    if (SDL_InitSubSystem(SDL_INIT_VIDEO) < 0) {
-        // SDL_InitSubSystem will, on error, set the SDL error.  Let that propogate to
-        // the caller to here:
-        WINRT_XAMLWasEnabled = oldXAMLWasEnabledValue;
-        return -1;
-    }
-
-    // All done, for now.
-    return 0;
-#endif // WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP  /  else
-}
+/*
+  Simple DirectMedia Layer
+  Copyright (C) 1997-2013 Sam Lantinga <slouken@libsdl.org>
+
+  This software is provided 'as-is', without any express or implied
+  warranty.  In no event will the authors be held liable for any damages
+  arising from the use of this software.
+
+  Permission is granted to anyone to use this software for any purpose,
+  including commercial applications, and to alter it and redistribute it
+  freely, subject to the following restrictions:
+
+  1. The origin of this software must not be misrepresented; you must not
+     claim that you wrote the original software. If you use this software
+     in a product, an acknowledgment in the product documentation would be
+     appreciated but is not required.
+  2. Altered source versions must be plainly marked as such, and must not be
+     misrepresented as being the original software.
+  3. This notice may not be removed or altered from any source distribution.
+*/
+
+/* Windows includes */
+#include <agile.h>
+#include <Windows.h>
+
+#if WINAPI_FAMILY == WINAPI_FAMILY_APP
+#include <windows.ui.xaml.media.dxinterop.h>
+#endif
+
+
+/* SDL includes */
+#include "../../SDL_internal.h"
+#include "SDL.h"
+#include "../../video/winrt/SDL_winrtevents_c.h"
+#include "../../video/winrt/SDL_winrtvideo_cpp.h"
+#include "SDL_winrtapp_common.h"
+#include "SDL_winrtapp_xaml.h"
+
+
+
+/* SDL-internal globals: */
+SDL_bool WINRT_XAMLWasEnabled = SDL_FALSE;
+
+#if WINAPI_FAMILY == WINAPI_FAMILY_APP
+extern "C"
+ISwapChainBackgroundPanelNative * WINRT_GlobalSwapChainBackgroundPanelNative = NULL;
+static Windows::Foundation::EventRegistrationToken	WINRT_XAMLAppEventToken;
+#endif
+
+
+/*
+ * Input event handlers (XAML)
+ */
+#if WINAPI_FAMILY == WINAPI_FAMILY_APP
+
+static void
+WINRT_OnPointerPressedViaXAML(Platform::Object^ sender, Windows::UI::Xaml::Input::PointerRoutedEventArgs^ args)
+{
+    WINRT_ProcessPointerPressedEvent(WINRT_GlobalSDLWindow, args->GetCurrentPoint(nullptr));
+}
+
+static void
+WINRT_OnPointerMovedViaXAML(Platform::Object^ sender, Windows::UI::Xaml::Input::PointerRoutedEventArgs^ args)
+{
+    WINRT_ProcessPointerMovedEvent(WINRT_GlobalSDLWindow, args->GetCurrentPoint(nullptr));
+}
+
+static void
+WINRT_OnPointerReleasedViaXAML(Platform::Object^ sender, Windows::UI::Xaml::Input::PointerRoutedEventArgs^ args)
+{
+    WINRT_ProcessPointerReleasedEvent(WINRT_GlobalSDLWindow, args->GetCurrentPoint(nullptr));
+}
+
+static void
+WINRT_OnPointerWheelChangedViaXAML(Platform::Object^ sender, Windows::UI::Xaml::Input::PointerRoutedEventArgs^ args)
+{
+    WINRT_ProcessPointerWheelChangedEvent(WINRT_GlobalSDLWindow, args->GetCurrentPoint(nullptr));
+}
+
+#endif // WINAPI_FAMILY == WINAPI_FAMILY_APP
+
+
+/*
+ * XAML-to-SDL Rendering Callback
+ */
+#if WINAPI_FAMILY == WINAPI_FAMILY_APP
+
+static void
+WINRT_OnRenderViaXAML(_In_ Platform::Object^ sender, _In_ Platform::Object^ args)
+{
+    WINRT_CycleXAMLThread();
+}
+
+#endif // WINAPI_FAMILY == WINAPI_FAMILY_APP
+
+
+/*
+ * SDL + XAML Initialization
+ */
+
+int
+SDL_WinRTInitXAMLApp(int (*mainFunction)(int, char **), void * backgroundPanelAsIInspectable)
+{
+#if WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP
+    return SDL_SetError("XAML support is not yet available in Windows Phone.");
+#else
+    // Declare C++/CX namespaces:
+    using namespace Platform;
+    using namespace Windows::Foundation;
+    using namespace Windows::UI::Core;
+    using namespace Windows::UI::Xaml;
+    using namespace Windows::UI::Xaml::Controls;
+    using namespace Windows::UI::Xaml::Input;
+    using namespace Windows::UI::Xaml::Media;
+
+    // Make sure we have a valid XAML element (to draw onto):
+    if ( ! backgroundPanelAsIInspectable) {
+        return SDL_SetError("'backgroundPanelAsIInspectable' can't be NULL");
+    }
+
+    Platform::Object ^ backgroundPanel = reinterpret_cast<Object ^>((IInspectable *) backgroundPanelAsIInspectable);
+    SwapChainBackgroundPanel ^swapChainBackgroundPanel = dynamic_cast<SwapChainBackgroundPanel ^>(backgroundPanel);
+    if ( ! swapChainBackgroundPanel) {
+        return SDL_SetError("An unknown or unsupported type of XAML control was specified.");
+    }
+
+    // Setup event handlers:
+    swapChainBackgroundPanel->PointerPressed += ref new PointerEventHandler(WINRT_OnPointerPressedViaXAML);
+    swapChainBackgroundPanel->PointerReleased += ref new PointerEventHandler(WINRT_OnPointerReleasedViaXAML);
+    swapChainBackgroundPanel->PointerWheelChanged += ref new PointerEventHandler(WINRT_OnPointerWheelChangedViaXAML);
+    swapChainBackgroundPanel->PointerMoved += ref new PointerEventHandler(WINRT_OnPointerMovedViaXAML);
+
+    // Setup for rendering:
+    IInspectable *panelInspectable = (IInspectable*) reinterpret_cast<IInspectable*>(swapChainBackgroundPanel);
+    panelInspectable->QueryInterface(__uuidof(ISwapChainBackgroundPanelNative), (void **)&WINRT_GlobalSwapChainBackgroundPanelNative);
+
+    WINRT_XAMLAppEventToken = CompositionTarget::Rendering::add(ref new EventHandler<Object^>(WINRT_OnRenderViaXAML));
+
+    // Make sure the app is ready to call the SDL-centric main() function:
+    WINRT_SDLAppEntryPoint = mainFunction;
+    SDL_SetMainReady();
+
+    // Make sure video-init knows that we're initializing XAML:
+    SDL_bool oldXAMLWasEnabledValue = WINRT_XAMLWasEnabled;
+    WINRT_XAMLWasEnabled = SDL_TRUE;
+
+    // Make sure video modes are detected now, while we still have access to the WinRT
+    // CoreWindow.  WinRT will not allow the app's CoreWindow to be accessed via the
+    // SDL/WinRT thread.
+    if (SDL_InitSubSystem(SDL_INIT_VIDEO) < 0) {
+        // SDL_InitSubSystem will, on error, set the SDL error.  Let that propogate to
+        // the caller to here:
+        WINRT_XAMLWasEnabled = oldXAMLWasEnabledValue;
+        return -1;
+    }
+
+    // All done, for now.
+    return 0;
+#endif // WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP  /  else
+}
--- a/src/joystick/winrt/SDL_xinputjoystick.c	Wed Mar 12 11:57:15 2014 -0400
+++ b/src/joystick/winrt/SDL_xinputjoystick.c	Wed Mar 12 12:12:20 2014 -0400
@@ -18,7 +18,7 @@
      misrepresented as being the original software.
   3. This notice may not be removed or altered from any source distribution.
 */
-#include "SDL_config.h"
+#include "../../SDL_internal.h"
 
 #if SDL_JOYSTICK_XINPUT
 
--- a/src/render/direct3d11/SDL_render_d3d11.c	Wed Mar 12 11:57:15 2014 -0400
+++ b/src/render/direct3d11/SDL_render_d3d11.c	Wed Mar 12 12:12:20 2014 -0400
@@ -35,7 +35,7 @@
 
 #ifdef __WINRT__
 
-#include "SDL_render_d3d11_winrthelpers_cpp.h"
+#include "SDL_render_winrt.h"
 
 #if WINAPI_FAMILY == WINAPI_FAMILY_APP
 #include <windows.ui.xaml.media.dxinterop.h>
--- a/src/render/direct3d11/SDL_render_d3d11_winrthelpers.cpp	Wed Mar 12 11:57:15 2014 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,111 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2012 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-#include "../../SDL_internal.h"
-
-#if SDL_VIDEO_RENDER_D3D11 && !SDL_RENDER_DISABLED
-
-#include "SDL_syswm.h"
-extern "C" {
-#include "../SDL_sysrender.h"
-}
-
-#include <windows.ui.core.h>
-#include <windows.foundation.h>
-
-#if WINAPI_FAMILY == WINAPI_FAMILY_APP
-#include <windows.ui.xaml.media.dxinterop.h>
-#endif
-
-using namespace Windows::UI::Core;
-using namespace Windows::Graphics::Display;
-
-#include <DXGI.h>
-
-
-extern "C" void *
-D3D11_GetCoreWindowFromSDLRenderer(SDL_Renderer * renderer)
-{
-    SDL_Window * sdlWindow = renderer->window;
-    if ( ! renderer->window ) {
-        return NULL;
-    }
-
-    SDL_SysWMinfo sdlWindowInfo;
-    SDL_VERSION(&sdlWindowInfo.version);
-    if ( ! SDL_GetWindowWMInfo(sdlWindow, &sdlWindowInfo) ) {
-        return NULL;
-    }
-
-    if (sdlWindowInfo.subsystem != SDL_SYSWM_WINRT) {
-        return NULL;
-    }
-
-    if (!sdlWindowInfo.info.winrt.window) {
-        return NULL;
-    }
-
-    ABI::Windows::UI::Core::ICoreWindow *coreWindow = NULL;
-    if (FAILED(sdlWindowInfo.info.winrt.window->QueryInterface(&coreWindow))) {
-        return NULL;
-    }
-
-    IUnknown *coreWindowAsIUnknown = NULL;
-    coreWindow->QueryInterface(&coreWindowAsIUnknown);
-    coreWindow->Release();
-
-    return coreWindowAsIUnknown;
-}
-
-extern "C" DXGI_MODE_ROTATION
-D3D11_GetCurrentRotation()
-{
-    switch (DisplayProperties::CurrentOrientation) {
-#if WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP
-        /* Windows Phone rotations */
-        case DisplayOrientations::Landscape:
-            return DXGI_MODE_ROTATION_ROTATE90;
-        case DisplayOrientations::Portrait:
-            return DXGI_MODE_ROTATION_IDENTITY;
-        case DisplayOrientations::LandscapeFlipped:
-            return DXGI_MODE_ROTATION_ROTATE270;
-        case DisplayOrientations::PortraitFlipped:
-            return DXGI_MODE_ROTATION_ROTATE180;
-#else
-        /* Non-Windows-Phone rotations (ex: Windows 8, Windows RT) */
-        case DisplayOrientations::Landscape:
-            return DXGI_MODE_ROTATION_IDENTITY;
-        case DisplayOrientations::Portrait:
-            return DXGI_MODE_ROTATION_ROTATE270;
-        case DisplayOrientations::LandscapeFlipped:
-            return DXGI_MODE_ROTATION_ROTATE180;
-        case DisplayOrientations::PortraitFlipped:
-            return DXGI_MODE_ROTATION_ROTATE90;
-#endif /* WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP */
-
-    default:
-        return DXGI_MODE_ROTATION_UNSPECIFIED;
-    }
-}
-
-
-#endif /* SDL_VIDEO_RENDER_D3D11 && !SDL_RENDER_DISABLED */
-
-/* vi: set ts=4 sw=4 expandtab: */
--- a/src/render/direct3d11/SDL_render_d3d11_winrthelpers_cpp.h	Wed Mar 12 11:57:15 2014 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,40 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2012 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-#include "../../SDL_internal.h"
-
-#if SDL_VIDEO_RENDER_D3D11 && !SDL_RENDER_DISABLED
-
-#include "SDL_render.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-void * D3D11_GetCoreWindowFromSDLRenderer(SDL_Renderer * renderer);
-DXGI_MODE_ROTATION D3D11_GetCurrentRotation();
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* SDL_VIDEO_RENDER_D3D11 && !SDL_RENDER_DISABLED */
-
-/* vi: set ts=4 sw=4 expandtab: */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/render/direct3d11/SDL_render_winrt.cpp	Wed Mar 12 12:12:20 2014 -0400
@@ -0,0 +1,114 @@
+/*
+  Simple DirectMedia Layer
+  Copyright (C) 1997-2012 Sam Lantinga <slouken@libsdl.org>
+
+  This software is provided 'as-is', without any express or implied
+  warranty.  In no event will the authors be held liable for any damages
+  arising from the use of this software.
+
+  Permission is granted to anyone to use this software for any purpose,
+  including commercial applications, and to alter it and redistribute it
+  freely, subject to the following restrictions:
+
+  1. The origin of this software must not be misrepresented; you must not
+     claim that you wrote the original software. If you use this software
+     in a product, an acknowledgment in the product documentation would be
+     appreciated but is not required.
+  2. Altered source versions must be plainly marked as such, and must not be
+     misrepresented as being the original software.
+  3. This notice may not be removed or altered from any source distribution.
+*/
+#include "../../SDL_internal.h"
+
+#if SDL_VIDEO_RENDER_D3D11 && !SDL_RENDER_DISABLED
+
+#include "SDL_syswm.h"
+extern "C" {
+#include "../SDL_sysrender.h"
+}
+
+#include <windows.ui.core.h>
+#include <windows.graphics.display.h>
+
+#if WINAPI_FAMILY == WINAPI_FAMILY_APP
+#include <windows.ui.xaml.media.dxinterop.h>
+#endif
+
+using namespace ABI;
+using namespace Windows::UI::Core;
+using namespace Windows::Graphics::Display;
+
+#include <DXGI.h>
+
+#include "SDL_render_winrt.h"
+
+
+extern "C" void *
+D3D11_GetCoreWindowFromSDLRenderer(SDL_Renderer * renderer)
+{
+    SDL_Window * sdlWindow = renderer->window;
+    if ( ! renderer->window ) {
+        return NULL;
+    }
+
+    SDL_SysWMinfo sdlWindowInfo;
+    SDL_VERSION(&sdlWindowInfo.version);
+    if ( ! SDL_GetWindowWMInfo(sdlWindow, &sdlWindowInfo) ) {
+        return NULL;
+    }
+
+    if (sdlWindowInfo.subsystem != SDL_SYSWM_WINRT) {
+        return NULL;
+    }
+
+    if (!sdlWindowInfo.info.winrt.window) {
+        return NULL;
+    }
+
+    ABI::Windows::UI::Core::ICoreWindow *coreWindow = NULL;
+    if (FAILED(sdlWindowInfo.info.winrt.window->QueryInterface(&coreWindow))) {
+        return NULL;
+    }
+
+    IUnknown *coreWindowAsIUnknown = NULL;
+    coreWindow->QueryInterface(&coreWindowAsIUnknown);
+    coreWindow->Release();
+
+    return coreWindowAsIUnknown;
+}
+
+extern "C" DXGI_MODE_ROTATION
+D3D11_GetCurrentRotation()
+{
+#if 0 /* FIXME: This doesn't compile on Visual Studio 2013 */
+    switch (DisplayProperties::CurrentOrientation) {
+#if WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP
+    /* Windows Phone rotations */
+    case DisplayOrientations::Landscape:
+        return DXGI_MODE_ROTATION_ROTATE90;
+    case DisplayOrientations::Portrait:
+        return DXGI_MODE_ROTATION_IDENTITY;
+    case DisplayOrientations::LandscapeFlipped:
+        return DXGI_MODE_ROTATION_ROTATE270;
+    case DisplayOrientations::PortraitFlipped:
+        return DXGI_MODE_ROTATION_ROTATE180;
+#else
+    /* Non-Windows-Phone rotations (ex: Windows 8, Windows RT) */
+    case DisplayOrientations::Landscape:
+        return DXGI_MODE_ROTATION_IDENTITY;
+    case DisplayOrientations::Portrait:
+        return DXGI_MODE_ROTATION_ROTATE270;
+    case DisplayOrientations::LandscapeFlipped:
+        return DXGI_MODE_ROTATION_ROTATE180;
+    case DisplayOrientations::PortraitFlipped:
+        return DXGI_MODE_ROTATION_ROTATE90;
+#endif /* WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP */
+    }
+#endif
+    return DXGI_MODE_ROTATION_IDENTITY;
+}
+
+
+#endif /* SDL_VIDEO_RENDER_D3D11 && !SDL_RENDER_DISABLED */
+
+/* vi: set ts=4 sw=4 expandtab: */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/render/direct3d11/SDL_render_winrt.h	Wed Mar 12 12:12:20 2014 -0400
@@ -0,0 +1,40 @@
+/*
+  Simple DirectMedia Layer
+  Copyright (C) 1997-2012 Sam Lantinga <slouken@libsdl.org>
+
+  This software is provided 'as-is', without any express or implied
+  warranty.  In no event will the authors be held liable for any damages
+  arising from the use of this software.
+
+  Permission is granted to anyone to use this software for any purpose,
+  including commercial applications, and to alter it and redistribute it
+  freely, subject to the following restrictions:
+
+  1. The origin of this software must not be misrepresented; you must not
+     claim that you wrote the original software. If you use this software
+     in a product, an acknowledgment in the product documentation would be
+     appreciated but is not required.
+  2. Altered source versions must be plainly marked as such, and must not be
+     misrepresented as being the original software.
+  3. This notice may not be removed or altered from any source distribution.
+*/
+#include "../../SDL_internal.h"
+
+#if SDL_VIDEO_RENDER_D3D11 && !SDL_RENDER_DISABLED
+
+#include "SDL_render.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+void * D3D11_GetCoreWindowFromSDLRenderer(SDL_Renderer * renderer);
+DXGI_MODE_ROTATION D3D11_GetCurrentRotation();
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* SDL_VIDEO_RENDER_D3D11 && !SDL_RENDER_DISABLED */
+
+/* vi: set ts=4 sw=4 expandtab: */
--- a/src/video/winrt/SDL_winrtevents.cpp	Wed Mar 12 11:57:15 2014 -0400
+++ b/src/video/winrt/SDL_winrtevents.cpp	Wed Mar 12 12:12:20 2014 -0400
@@ -18,7 +18,7 @@
      misrepresented as being the original software.
   3. This notice may not be removed or altered from any source distribution.
 */
-#include "SDL_config.h"
+#include "../../SDL_internal.h"
 
 #if SDL_VIDEO_DRIVER_WINRT
 
--- a/src/video/winrt/SDL_winrtmouse.cpp	Wed Mar 12 11:57:15 2014 -0400
+++ b/src/video/winrt/SDL_winrtmouse.cpp	Wed Mar 12 12:12:20 2014 -0400
@@ -18,7 +18,6 @@
      misrepresented as being the original software.
   3. This notice may not be removed or altered from any source distribution.
 */
-
 #include "../../SDL_internal.h"
 
 #if SDL_VIDEO_DRIVER_WINRT
--- a/src/video/winrt/SDL_winrtopengles.cpp	Wed Mar 12 11:57:15 2014 -0400
+++ b/src/video/winrt/SDL_winrtopengles.cpp	Wed Mar 12 12:12:20 2014 -0400
@@ -18,7 +18,7 @@
      misrepresented as being the original software.
   3. This notice may not be removed or altered from any source distribution.
 */
-#include "SDL_config.h"
+#include "../../SDL_internal.h"
 
 // TODO: WinRT, make this file compile via C code
 
--- a/src/video/winrt/SDL_winrtpointerinput.cpp	Wed Mar 12 11:57:15 2014 -0400
+++ b/src/video/winrt/SDL_winrtpointerinput.cpp	Wed Mar 12 12:12:20 2014 -0400
@@ -18,7 +18,7 @@
      misrepresented as being the original software.
   3. This notice may not be removed or altered from any source distribution.
 */
-#include "SDL_config.h"
+#include "../../SDL_internal.h"
 
 #if SDL_VIDEO_DRIVER_WINRT