Fixed various build and runtime errors when using WinRT with VS2012.
This commit is contained in:
parent
5007e2996e
commit
7ba3100244
11 changed files with 125 additions and 30 deletions
|
@ -42,7 +42,7 @@
|
|||
SDL_bool WINRT_XAMLWasEnabled = SDL_FALSE;
|
||||
|
||||
#if WINAPI_FAMILY == WINAPI_FAMILY_APP
|
||||
ISwapChainBackgroundPanelNative * WINRT_GlobalSwapChainBackgroundPanelNative = NULL;
|
||||
extern "C" ISwapChainBackgroundPanelNative * WINRT_GlobalSwapChainBackgroundPanelNative = NULL;
|
||||
static Windows::Foundation::EventRegistrationToken WINRT_XAMLAppEventToken;
|
||||
#endif
|
||||
|
||||
|
|
|
@ -45,6 +45,8 @@
|
|||
|
||||
#if TARGET_OS_IPHONE /* probably not useful on iOS. */
|
||||
#define SDL_DYNAMIC_API 0
|
||||
#elif SDL_BUILDING_WINRT /* probaly not useful on WinRT, given current .dll loading restrictions */
|
||||
#define SDL_DYNAMIC_API 0
|
||||
#else /* everyone else. */
|
||||
#define SDL_DYNAMIC_API 1
|
||||
#endif
|
||||
|
|
|
@ -37,6 +37,7 @@ SDL_bool SDL_GetPowerInfo_Haiku(SDL_PowerState *, int *, int *);
|
|||
SDL_bool SDL_GetPowerInfo_UIKit(SDL_PowerState *, int *, int *);
|
||||
SDL_bool SDL_GetPowerInfo_Android(SDL_PowerState *, int *, int *);
|
||||
SDL_bool SDL_GetPowerInfo_PSP(SDL_PowerState *, int *, int *);
|
||||
SDL_bool SDL_GetPowerInfo_WinRT(SDL_PowerState *, int *, int *);
|
||||
|
||||
#ifndef SDL_POWER_DISABLED
|
||||
#ifdef SDL_POWER_HARDWIRED
|
||||
|
@ -77,6 +78,9 @@ static SDL_GetPowerInfo_Impl implementations[] = {
|
|||
#ifdef SDL_POWER_PSP /* handles PSP. */
|
||||
SDL_GetPowerInfo_PSP,
|
||||
#endif
|
||||
#ifdef SDL_POWER_WINRT /* handles WinRT */
|
||||
SDL_GetPowerInfo_WinRT,
|
||||
#endif
|
||||
|
||||
#ifdef SDL_POWER_HARDWIRED
|
||||
SDL_GetPowerInfo_Hardwired,
|
||||
|
|
|
@ -961,11 +961,10 @@ D3D11_CreateDeviceResources(SDL_Renderer * renderer)
|
|||
D3D11_SAMPLER_DESC samplerDesc;
|
||||
D3D11_RASTERIZER_DESC rasterDesc;
|
||||
|
||||
// TODO, WinRT, Mar 11, 2014: once SDL/WinRT is back up and running, see if D3D11 init functions are loadable (via LoadPackagedLibrary/SDL_LoadObject, etc.)
|
||||
//#ifdef __WINRT__
|
||||
// CreateDXGIFactoryFunc = CreateDXGIFactory;
|
||||
// D3D11CreateDeviceFunc = D3D11CreateDevice;
|
||||
//#else
|
||||
#ifdef __WINRT__
|
||||
CreateDXGIFactoryFunc = CreateDXGIFactory1;
|
||||
D3D11CreateDeviceFunc = D3D11CreateDevice;
|
||||
#else
|
||||
data->hDXGIMod = SDL_LoadObject("dxgi.dll");
|
||||
if (!data->hDXGIMod) {
|
||||
result = E_FAIL;
|
||||
|
@ -989,7 +988,7 @@ D3D11_CreateDeviceResources(SDL_Renderer * renderer)
|
|||
result = E_FAIL;
|
||||
goto done;
|
||||
}
|
||||
//#endif /* __WINRT__ */
|
||||
#endif /* __WINRT__ */
|
||||
|
||||
result = CreateDXGIFactoryFunc(&IID_IDXGIFactory2, &data->dxgiFactory);
|
||||
if (FAILED(result)) {
|
||||
|
@ -2833,6 +2832,11 @@ D3D11_RenderPresent(SDL_Renderer * renderer)
|
|||
HRESULT result;
|
||||
DXGI_PRESENT_PARAMETERS parameters;
|
||||
|
||||
#if WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP
|
||||
syncInterval = 1;
|
||||
presentFlags = 0;
|
||||
result = IDXGISwapChain_Present(data->swapChain, syncInterval, presentFlags);
|
||||
#else
|
||||
if (renderer->info.flags & SDL_RENDERER_PRESENTVSYNC) {
|
||||
syncInterval = 1;
|
||||
presentFlags = 0;
|
||||
|
@ -2841,9 +2845,6 @@ D3D11_RenderPresent(SDL_Renderer * renderer)
|
|||
presentFlags = DXGI_PRESENT_DO_NOT_WAIT;
|
||||
}
|
||||
|
||||
#if WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP
|
||||
result = IDXGISwapChain_Present(data->swapChain, syncInterval, presentFlags);
|
||||
#else
|
||||
/* The application may optionally specify "dirty" or "scroll"
|
||||
* rects to improve efficiency in certain scenarios.
|
||||
* This option is not available on Windows Phone 8, to note.
|
||||
|
|
|
@ -37,6 +37,8 @@ extern "C" {
|
|||
using namespace Windows::UI::Core;
|
||||
using namespace Windows::Graphics::Display;
|
||||
|
||||
#include <DXGI.h>
|
||||
|
||||
|
||||
extern "C" void *
|
||||
D3D11_GetCoreWindowFromSDLRenderer(SDL_Renderer * renderer)
|
||||
|
|
|
@ -79,6 +79,21 @@ SDL_mutexP(SDL_mutex * mutex)
|
|||
}
|
||||
}
|
||||
|
||||
/* TryLock the mutex */
|
||||
int
|
||||
SDL_TryLockMutex(SDL_mutex * mutex)
|
||||
{
|
||||
int retval = 0;
|
||||
if (mutex == NULL) {
|
||||
return SDL_SetError("Passed a NULL mutex");
|
||||
}
|
||||
|
||||
if (mutex->cpp_mutex.try_lock() == false) {
|
||||
retval = SDL_MUTEX_TIMEDOUT;
|
||||
}
|
||||
return retval;
|
||||
}
|
||||
|
||||
/* Unlock the mutex */
|
||||
extern "C"
|
||||
int
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue