diff --git a/VisualC-WinRT/SDL/SDL_VS2012-WinRT.vcxproj b/VisualC-WinRT/SDL/SDL_VS2012-WinRT.vcxproj
index 200b6d58b..1e8291494 100644
--- a/VisualC-WinRT/SDL/SDL_VS2012-WinRT.vcxproj
+++ b/VisualC-WinRT/SDL/SDL_VS2012-WinRT.vcxproj
@@ -286,7 +286,6 @@
-
diff --git a/VisualC-WinRT/SDL/SDL_VS2012-WinRT.vcxproj.filters b/VisualC-WinRT/SDL/SDL_VS2012-WinRT.vcxproj.filters
index 9a0961341..d28d017d4 100644
--- a/VisualC-WinRT/SDL/SDL_VS2012-WinRT.vcxproj.filters
+++ b/VisualC-WinRT/SDL/SDL_VS2012-WinRT.vcxproj.filters
@@ -593,9 +593,6 @@
Source Files
-
- Source Files
-
Source Files
diff --git a/src/core/winrt/SDL_winrtapp.cpp b/src/core/winrt/SDL_winrtapp.cpp
index 2ce66b5d1..7622314fd 100644
--- a/src/core/winrt/SDL_winrtapp.cpp
+++ b/src/core/winrt/SDL_winrtapp.cpp
@@ -1,10 +1,26 @@
+/* Standard C++11 includes */
#include
#include
#include
+using namespace std;
+
+/* Windows includes */
#include "ppltasks.h"
+using namespace concurrency;
+using namespace Windows::ApplicationModel;
+using namespace Windows::ApplicationModel::Core;
+using namespace Windows::ApplicationModel::Activation;
+using namespace Windows::Devices::Input;
+using namespace Windows::Graphics::Display;
+using namespace Windows::Foundation;
+using namespace Windows::System;
+using namespace Windows::UI::Core;
+using namespace Windows::UI::Input;
+
+/* SDL includes */
extern "C" {
#include "SDL_assert.h"
#include "SDL_events.h"
@@ -21,20 +37,8 @@ extern "C" {
}
#include "../../video/winrt/SDL_winrtevents_c.h"
-#include "../../video/winrt/SDL_winrtvideo.h"
#include "SDL_winrtapp.h"
-using namespace concurrency;
-using namespace std;
-using namespace Windows::ApplicationModel;
-using namespace Windows::ApplicationModel::Core;
-using namespace Windows::ApplicationModel::Activation;
-using namespace Windows::Devices::Input;
-using namespace Windows::Graphics::Display;
-using namespace Windows::Foundation;
-using namespace Windows::System;
-using namespace Windows::UI::Core;
-using namespace Windows::UI::Input;
// Compile-time debugging options:
// To enable, uncomment; to disable, comment them out.
@@ -140,7 +144,7 @@ static void WINRT_SetDisplayOrientationsPreference(void *userdata, const char *n
SDL_WinRTApp::SDL_WinRTApp() :
m_windowClosed(false),
m_windowVisible(true),
- m_sdlWindowData(NULL),
+ m_sdlWindow(NULL),
m_sdlVideoDevice(NULL)
{
}
@@ -279,16 +283,16 @@ void SDL_WinRTApp::Uninitialize()
void SDL_WinRTApp::OnWindowSizeChanged(CoreWindow^ sender, WindowSizeChangedEventArgs^ args)
{
#if LOG_WINDOW_EVENTS==1
- SDL_Log("%s, size={%f,%f}, current orientation=%d, native orientation=%d, auto rot. pref=%d, m_sdlWindowData?=%s\n",
+ SDL_Log("%s, size={%f,%f}, current orientation=%d, native orientation=%d, auto rot. pref=%d, m_sdlWindow?=%s\n",
__FUNCTION__,
args->Size.Width, args->Size.Height,
(int)DisplayProperties::CurrentOrientation,
(int)DisplayProperties::NativeOrientation,
(int)DisplayProperties::AutoRotationPreferences,
- (m_sdlWindowData ? "yes" : "no"));
+ (m_sdlWindow ? "yes" : "no"));
#endif
- if (m_sdlWindowData) {
+ if (m_sdlWindow) {
// Make the new window size be the one true fullscreen mode.
// This change was initially done, in part, to allow the Direct3D 11.1
// renderer to receive window-resize events as a device rotates.
@@ -309,7 +313,7 @@ void SDL_WinRTApp::OnWindowSizeChanged(CoreWindow^ sender, WindowSizeChangedEven
const int windowWidth = (int) ceil(args->Size.Width);
const int windowHeight = (int) ceil(args->Size.Height);
SDL_SendWindowEvent(
- m_sdlWindowData->sdlWindow,
+ m_sdlWindow,
SDL_WINDOWEVENT_RESIZED,
windowWidth,
windowHeight);
@@ -319,20 +323,20 @@ void SDL_WinRTApp::OnWindowSizeChanged(CoreWindow^ sender, WindowSizeChangedEven
void SDL_WinRTApp::OnVisibilityChanged(CoreWindow^ sender, VisibilityChangedEventArgs^ args)
{
#if LOG_WINDOW_EVENTS==1
- SDL_Log("%s, visible?=%s, m_sdlWindowData?=%s\n",
+ SDL_Log("%s, visible?=%s, m_sdlWindow?=%s\n",
__FUNCTION__,
(args->Visible ? "yes" : "no"),
- (m_sdlWindowData ? "yes" : "no"));
+ (m_sdlWindow ? "yes" : "no"));
#endif
m_windowVisible = args->Visible;
- if (m_sdlWindowData) {
- SDL_bool wasSDLWindowSurfaceValid = m_sdlWindowData->sdlWindow->surface_valid;
+ if (m_sdlWindow) {
+ SDL_bool wasSDLWindowSurfaceValid = m_sdlWindow->surface_valid;
if (args->Visible) {
- SDL_SendWindowEvent(m_sdlWindowData->sdlWindow, SDL_WINDOWEVENT_SHOWN, 0, 0);
+ SDL_SendWindowEvent(m_sdlWindow, SDL_WINDOWEVENT_SHOWN, 0, 0);
} else {
- SDL_SendWindowEvent(m_sdlWindowData->sdlWindow, SDL_WINDOWEVENT_HIDDEN, 0, 0);
+ SDL_SendWindowEvent(m_sdlWindow, SDL_WINDOWEVENT_HIDDEN, 0, 0);
}
// HACK: Prevent SDL's window-hide handling code, which currently
@@ -341,7 +345,7 @@ void SDL_WinRTApp::OnVisibilityChanged(CoreWindow^ sender, VisibilityChangedEven
//
// A better solution to this probably involves figuring out if the
// fake window resize can be prevented.
- m_sdlWindowData->sdlWindow->surface_valid = wasSDLWindowSurfaceValid;
+ m_sdlWindow->surface_valid = wasSDLWindowSurfaceValid;
}
}
@@ -355,32 +359,27 @@ void SDL_WinRTApp::OnWindowClosed(CoreWindow^ sender, CoreWindowEventArgs^ args)
void SDL_WinRTApp::OnPointerPressed(CoreWindow^ sender, PointerEventArgs^ args)
{
- SDL_Window * window = (m_sdlWindowData ? m_sdlWindowData->sdlWindow : nullptr);
- WINRT_ProcessPointerPressedEvent(window, args);
+ WINRT_ProcessPointerPressedEvent(m_sdlWindow, args);
}
void SDL_WinRTApp::OnPointerReleased(CoreWindow^ sender, PointerEventArgs^ args)
{
- SDL_Window * window = (m_sdlWindowData ? m_sdlWindowData->sdlWindow : nullptr);
- WINRT_ProcessPointerReleasedEvent(window, args);
+ WINRT_ProcessPointerReleasedEvent(m_sdlWindow, args);
}
void SDL_WinRTApp::OnPointerWheelChanged(CoreWindow^ sender, PointerEventArgs^ args)
{
- SDL_Window * window = (m_sdlWindowData ? m_sdlWindowData->sdlWindow : nullptr);
- WINRT_ProcessPointerWheelChangedEvent(window, args);
+ WINRT_ProcessPointerWheelChangedEvent(m_sdlWindow, args);
}
void SDL_WinRTApp::OnMouseMoved(MouseDevice^ mouseDevice, MouseEventArgs^ args)
{
- SDL_Window * window = (m_sdlWindowData ? m_sdlWindowData->sdlWindow : nullptr);
- WINRT_ProcessMouseMovedEvent(window, args);
+ WINRT_ProcessMouseMovedEvent(m_sdlWindow, args);
}
void SDL_WinRTApp::OnPointerMoved(CoreWindow^ sender, PointerEventArgs^ args)
{
- SDL_Window * window = (m_sdlWindowData ? m_sdlWindowData->sdlWindow : nullptr);
- WINRT_ProcessPointerMovedEvent(window, args);
+ WINRT_ProcessPointerMovedEvent(m_sdlWindow, args);
}
void SDL_WinRTApp::OnKeyDown(Windows::UI::Core::CoreWindow^ sender, Windows::UI::Core::KeyEventArgs^ args)
@@ -439,9 +438,9 @@ void SDL_WinRTApp::OnSuspending(Platform::Object^ sender, SuspendingEventArgs^ a
// first via a callback passed to SDL_AddEventWatch, and second via
// SDL's event queue, the event will be sent to SDL, then immediately
// removed from the queue.
- if (m_sdlWindowData)
+ if (m_sdlWindow)
{
- SDL_SendWindowEvent(m_sdlWindowData->sdlWindow, SDL_WINDOWEVENT_MINIMIZED, 0, 0); // TODO: see if SDL_WINDOWEVENT_SIZE_CHANGED should be getting triggered here (it is, currently)
+ SDL_SendWindowEvent(m_sdlWindow, SDL_WINDOWEVENT_MINIMIZED, 0, 0); // TODO: see if SDL_WINDOWEVENT_SIZE_CHANGED should be getting triggered here (it is, currently)
SDL_FilterEvents(RemoveAppSuspendAndResumeEvents, 0);
}
deferral->Complete();
@@ -453,9 +452,9 @@ void SDL_WinRTApp::OnResuming(Platform::Object^ sender, Platform::Object^ args)
// Restore any data or state that was unloaded on suspend. By default, data
// and state are persisted when resuming from suspend. Note that this event
// does not occur if the app was previously terminated.
- if (m_sdlWindowData)
+ if (m_sdlWindow)
{
- SDL_SendWindowEvent(m_sdlWindowData->sdlWindow, SDL_WINDOWEVENT_RESTORED, 0, 0); // TODO: see if SDL_WINDOWEVENT_SIZE_CHANGED should be getting triggered here (it is, currently)
+ SDL_SendWindowEvent(m_sdlWindow, SDL_WINDOWEVENT_RESTORED, 0, 0); // TODO: see if SDL_WINDOWEVENT_SIZE_CHANGED should be getting triggered here (it is, currently)
// Remove the app-resume event from the queue, as is done with the
// app-suspend event.
@@ -488,19 +487,14 @@ SDL_DisplayMode SDL_WinRTApp::CalcCurrentDisplayMode()
return mode;
}
-const SDL_WindowData * SDL_WinRTApp::GetSDLWindowData() const
+SDL_Window * SDL_WinRTApp::GetSDLWindow()
{
- return m_sdlWindowData;
+ return m_sdlWindow;
}
-bool SDL_WinRTApp::HasSDLWindowData() const
+void SDL_WinRTApp::SetSDLWindow(SDL_Window * window)
{
- return (m_sdlWindowData != NULL);
-}
-
-void SDL_WinRTApp::SetSDLWindowData(const SDL_WindowData * windowData)
-{
- m_sdlWindowData = windowData;
+ m_sdlWindow = window;
}
void SDL_WinRTApp::SetSDLVideoDevice(const SDL_VideoDevice * videoDevice)
diff --git a/src/core/winrt/SDL_winrtapp.h b/src/core/winrt/SDL_winrtapp.h
index db19e8c6a..ada19634c 100644
--- a/src/core/winrt/SDL_winrtapp.h
+++ b/src/core/winrt/SDL_winrtapp.h
@@ -1,7 +1,5 @@
#pragma once
-struct SDL_WindowData;
-
ref class SDL_WinRTApp sealed : public Windows::ApplicationModel::Core::IFrameworkView
{
public:
@@ -18,9 +16,8 @@ internal:
// SDL-specific methods
SDL_DisplayMode CalcCurrentDisplayMode();
void PumpEvents();
- const SDL_WindowData * GetSDLWindowData() const;
- bool HasSDLWindowData() const;
- void SetSDLWindowData(const SDL_WindowData * windowData);
+ SDL_Window * GetSDLWindow();
+ void SetSDLWindow(SDL_Window * window);
void SetSDLVideoDevice(const SDL_VideoDevice * videoDevice);
Windows::Foundation::Point TransformCursor(Windows::Foundation::Point rawPosition);
@@ -45,6 +42,6 @@ protected:
private:
bool m_windowClosed;
bool m_windowVisible;
- const SDL_WindowData* m_sdlWindowData;
+ SDL_Window* m_sdlWindow;
const SDL_VideoDevice* m_sdlVideoDevice;
};
diff --git a/src/video/winrt/SDL_winrtevents.cpp b/src/video/winrt/SDL_winrtevents.cpp
index 8438ac279..ef1cb690e 100644
--- a/src/video/winrt/SDL_winrtevents.cpp
+++ b/src/video/winrt/SDL_winrtevents.cpp
@@ -22,14 +22,20 @@
#if SDL_VIDEO_DRIVER_WINRT
-#include "../../events/SDL_events_c.h"
-
-#include "SDL_winrtvideo.h"
+/* SDL includes */
#include "SDL_winrtevents_c.h"
#include "../../core/winrt/SDL_winrtapp.h"
+extern "C" {
+#include "../SDL_sysvideo.h"
+#include "../../events/SDL_events_c.h"
+}
+
extern SDL_WinRTApp ^ SDL_WinRTGlobalApp;
+
+/* General event-management function(s) */
+
void
WINRT_PumpEvents(_THIS)
{
diff --git a/src/video/winrt/SDL_winrtevents_c.h b/src/video/winrt/SDL_winrtevents_c.h
index f4b179e62..68e746a72 100644
--- a/src/video/winrt/SDL_winrtevents_c.h
+++ b/src/video/winrt/SDL_winrtevents_c.h
@@ -19,7 +19,10 @@
3. This notice may not be removed or altered from any source distribution.
*/
#include "SDL_config.h"
-#include "SDL_winrtvideo.h"
+
+extern "C" {
+#include "../SDL_sysvideo.h"
+}
/*
* Internal-use, C-style functions:
diff --git a/src/video/winrt/SDL_winrtkeyboard.cpp b/src/video/winrt/SDL_winrtkeyboard.cpp
index 52b8c2a39..a68b6d50c 100644
--- a/src/video/winrt/SDL_winrtkeyboard.cpp
+++ b/src/video/winrt/SDL_winrtkeyboard.cpp
@@ -22,15 +22,16 @@
#if SDL_VIDEO_DRIVER_WINRT
-// Standard C++11 headers:
+/* Standard C++11 includes */
#include
-// Windows-specific headers:
+/* Windows-specific includes */
#include
+#include
-// SDL-specific headers:
+/* SDL-specific includes */
#include
#include "SDL_winrtevents_c.h"
diff --git a/src/video/winrt/SDL_winrtvideo.cpp b/src/video/winrt/SDL_winrtvideo.cpp
index e87e056c5..03ff7730e 100644
--- a/src/video/winrt/SDL_winrtvideo.cpp
+++ b/src/video/winrt/SDL_winrtvideo.cpp
@@ -28,6 +28,12 @@
was based off of SDL's "dummy" video driver.
*/
+/* Windows includes */
+#include
+using namespace Windows::UI::Core;
+
+
+/* SDL includes */
extern "C" {
#include "SDL_video.h"
#include "SDL_mouse.h"
@@ -39,20 +45,11 @@ extern "C" {
}
#include "../../core/winrt/SDL_winrtapp.h"
-#include "SDL_winrtvideo.h"
#include "SDL_winrtevents_c.h"
#include "SDL_winrtmouse.h"
-using namespace Windows::UI::Core;
-
-/* On Windows, windows.h defines CreateWindow */
-#ifdef CreateWindow
-#undef CreateWindow
-#endif
-
extern SDL_WinRTApp ^ SDL_WinRTGlobalApp;
-#define WINRTVID_DRIVER_NAME "winrt"
/* Initialization/Query functions */
static int WINRT_VideoInit(_THIS);
@@ -60,11 +57,21 @@ static int WINRT_InitModes(_THIS);
static int WINRT_SetDisplayMode(_THIS, SDL_VideoDisplay * display, SDL_DisplayMode * mode);
static void WINRT_VideoQuit(_THIS);
+
/* Window functions */
static int WINRT_CreateWindow(_THIS, SDL_Window * window);
static void WINRT_DestroyWindow(_THIS, SDL_Window * window);
static SDL_bool WINRT_GetWindowWMInfo(_THIS, SDL_Window * window, SDL_SysWMinfo * info);
+
+/* Internal window data */
+struct SDL_WindowData
+{
+ SDL_Window *sdlWindow;
+ Platform::Agile coreWindow;
+};
+
+
/* WinRT driver bootstrap functions */
static int
@@ -102,17 +109,14 @@ WINRT_CreateDevice(int devindex)
device->DestroyWindow = WINRT_DestroyWindow;
device->SetDisplayMode = WINRT_SetDisplayMode;
device->PumpEvents = WINRT_PumpEvents;
- //device->CreateWindowFramebuffer = SDL_WINRT_CreateWindowFramebuffer;
- //device->UpdateWindowFramebuffer = SDL_WINRT_UpdateWindowFramebuffer;
- //device->DestroyWindowFramebuffer = SDL_WINRT_DestroyWindowFramebuffer;
device->GetWindowWMInfo = WINRT_GetWindowWMInfo;
device->free = WINRT_DeleteDevice;
-
SDL_WinRTGlobalApp->SetSDLVideoDevice(device);
return device;
}
+#define WINRTVID_DRIVER_NAME "winrt"
VideoBootStrap WINRT_bootstrap = {
WINRTVID_DRIVER_NAME, "SDL Windows RT video driver",
WINRT_Available, WINRT_CreateDevice
@@ -160,8 +164,7 @@ WINRT_CreateWindow(_THIS, SDL_Window * window)
{
// Make sure that only one window gets created, at least until multimonitor
// support is added.
- if (SDL_WinRTGlobalApp->HasSDLWindowData())
- {
+ if (SDL_WinRTGlobalApp->GetSDLWindow() != NULL) {
SDL_SetError("WinRT only supports one window");
return -1;
}
@@ -199,7 +202,7 @@ WINRT_CreateWindow(_THIS, SDL_Window * window)
/* Make sure the WinRT app's IFramworkView can post events on
behalf of SDL:
*/
- SDL_WinRTGlobalApp->SetSDLWindowData(data);
+ SDL_WinRTGlobalApp->SetSDLWindow(window);
/* All done! */
return 0;
@@ -210,10 +213,8 @@ WINRT_DestroyWindow(_THIS, SDL_Window * window)
{
SDL_WindowData * data = (SDL_WindowData *) window->driverdata;
- if (SDL_WinRTGlobalApp->HasSDLWindowData() &&
- SDL_WinRTGlobalApp->GetSDLWindowData()->sdlWindow == window)
- {
- SDL_WinRTGlobalApp->SetSDLWindowData(NULL);
+ if (SDL_WinRTGlobalApp->GetSDLWindow() == window) {
+ SDL_WinRTGlobalApp->SetSDLWindow(NULL);
}
if (data) {
diff --git a/src/video/winrt/SDL_winrtvideo.h b/src/video/winrt/SDL_winrtvideo.h
deleted file mode 100644
index 4418754c2..000000000
--- a/src/video/winrt/SDL_winrtvideo.h
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- Simple DirectMedia Layer
- Copyright (C) 1997-2012 Sam Lantinga
-
- 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_config.h"
-
-#ifndef _SDL_winrtvideo_h
-#define _SDL_winrtvideo_h
-
-extern "C" {
-#include "../SDL_sysvideo.h"
-}
-
-#include
-
-struct SDL_WindowData
-{
- SDL_Window *sdlWindow;
- Platform::Agile coreWindow;
-};
-
-#endif /* _SDL_winrtvideo_h */
-
-/* vi: set ts=4 sw=4 expandtab: */