From 13c511697c40003bcabddc42922777be81d2125b Mon Sep 17 00:00:00 2001 From: David Ludwig Date: Sun, 23 Nov 2014 08:52:10 -0500 Subject: [PATCH] WinRT: allowed 'roaming' and 'temp' folder paths to be retrieved on WinPhone 8.1 Windows Phone 8.0 either did not define, or provide access to, a 'RoamingFolder' or 'TemporaryFolder' for apps to use. Windows 8.0 and 8.1 do, as does Windows Phone 8.1. This change allows SDL-based Windows Phone 8.1 apps to access these folders, via either the SDL_WinRTGetFSPathUNICODE() or SDL_WinRTGetFSPathUTF8() functions. SDL_GetPrefPath(), which on WinRT, is based on SDL_WinRTGetFSPathUTF8(), will continue to return the app's 'local' folder, despite Windows 8.x counterpart apps using the 'roaming' folder, in order to preserve compatibility when 8.0-based Phone apps upgrade to 8.1-based Phone apps. --- src/filesystem/winrt/SDL_sysfilesystem.cpp | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/filesystem/winrt/SDL_sysfilesystem.cpp b/src/filesystem/winrt/SDL_sysfilesystem.cpp index 48c21e10b..3bc37cb50 100644 --- a/src/filesystem/winrt/SDL_sysfilesystem.cpp +++ b/src/filesystem/winrt/SDL_sysfilesystem.cpp @@ -62,7 +62,7 @@ SDL_WinRTGetFSPathUNICODE(SDL_WinRT_Path pathType) return path.c_str(); } -#if WINAPI_FAMILY != WINAPI_FAMILY_PHONE_APP +#if (WINAPI_FAMILY != WINAPI_FAMILY_PHONE_APP) || (NTDDI_VERSION > NTDDI_WIN8) case SDL_WINRT_PATH_ROAMING_FOLDER: { static wstring path; @@ -145,10 +145,16 @@ SDL_GetPrefPath(const char *org, const char *app) */ #if WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP - /* A 'Roaming' folder is not available in Windows Phone 8, however a 'Local' folder is. */ + /* A 'Roaming' folder is not available in Windows Phone 8.0, however a + * 'Local' folder is. Use the 'Local' folder in order to preserve + * compatibility with Windows Phone 8.0, and with app-installs that have + * been updated from 8.0-based, to 8.1-based apps. + */ const char * srcPath = SDL_WinRTGetFSPathUTF8(SDL_WINRT_PATH_LOCAL_FOLDER); #else - /* A 'Roaming' folder is available on Windows 8 and 8.1. Use that. */ + /* A 'Roaming' folder is available on Windows 8 and 8.1. Use that. + * (SDL for Win32/Windows-Desktop uses the 'roaming' path as well). + */ const char * srcPath = SDL_WinRTGetFSPathUTF8(SDL_WINRT_PATH_ROAMING_FOLDER); #endif