From 453063e20fc2f6e7ce97473a7d6841be47d26218 Mon Sep 17 00:00:00 2001 From: Alex Szpakowski Date: Sun, 22 Dec 2019 22:41:13 -0400 Subject: [PATCH] Windows: Use a more modern API for determining the save directory. --HG-- branch : minor --- src/modules/filesystem/physfs/Filesystem.cpp | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/src/modules/filesystem/physfs/Filesystem.cpp b/src/modules/filesystem/physfs/Filesystem.cpp index 19e0137bd..7e81f244e 100644 --- a/src/modules/filesystem/physfs/Filesystem.cpp +++ b/src/modules/filesystem/physfs/Filesystem.cpp @@ -37,6 +37,8 @@ #ifdef LOVE_WINDOWS # include # include +# include +# include #else # include # include @@ -497,8 +499,17 @@ std::string Filesystem::getAppdataDirectory() #ifdef LOVE_WINDOWS_UWP appdata = getUserDirectory(); #elif defined(LOVE_WINDOWS) - wchar_t *w_appdata = _wgetenv(L"APPDATA"); - appdata = to_utf8(w_appdata); + PWSTR path = nullptr; + if (SUCCEEDED(SHGetKnownFolderPath(FOLDERID_RoamingAppData, 0, nullptr, &path))) + { + appdata = to_utf8(path); + CoTaskMemFree(path); + } + else + { + wchar_t *w_appdata = _wgetenv(L"APPDATA"); + appdata = to_utf8(w_appdata); + } replace_char(appdata, '\\', '/'); #elif defined(LOVE_MACOS) appdata = normalize(love::macos::getAppdataDirectory());