diff options
Diffstat (limited to 'backends/platform/sdl/win32')
-rw-r--r-- | backends/platform/sdl/win32/win32.cpp | 20 | ||||
-rw-r--r-- | backends/platform/sdl/win32/win32.h | 2 |
2 files changed, 22 insertions, 0 deletions
diff --git a/backends/platform/sdl/win32/win32.cpp b/backends/platform/sdl/win32/win32.cpp index 99c71a49e0..02ad225749 100644 --- a/backends/platform/sdl/win32/win32.cpp +++ b/backends/platform/sdl/win32/win32.cpp @@ -29,6 +29,7 @@ #include <windows.h> #undef ARRAYSIZE // winnt.h defines ARRAYSIZE, but we want our own one... #include <shellapi.h> +#include <ShlObj.h> #include "common/scummsys.h" #include "common/config-manager.h" @@ -145,6 +146,25 @@ bool OSystem_Win32::openUrl(const Common::String &url) { return true; } +Common::String OSystem_Win32::getScreenshotsPath() { + char picturesPath[MAXPATHLEN]; + + // Use the My Pictures folder. + if (SHGetFolderPath(NULL, CSIDL_MYPICTURES, NULL, SHGFP_TYPE_CURRENT, picturesPath) != S_OK) + error("Unable to access My Pictures directory"); + + Common::String screenshotsPath = Common::String(picturesPath) + "\\ScummVM Screenshots\\"; + + // If the directory already exists (as it should in most cases), + // we don't want to fail, but we need to stop on other errors (such as ERROR_PATH_NOT_FOUND) + if (!CreateDirectory(screenshotsPath.c_str(), NULL)) { + if (GetLastError() != ERROR_ALREADY_EXISTS) + error("Cannot create ScummVM Screenshots folder"); + } + + return screenshotsPath; +} + Common::String OSystem_Win32::getDefaultConfigFileName() { char configFile[MAXPATHLEN]; diff --git a/backends/platform/sdl/win32/win32.h b/backends/platform/sdl/win32/win32.h index 636ebae88f..6764a7fe49 100644 --- a/backends/platform/sdl/win32/win32.h +++ b/backends/platform/sdl/win32/win32.h @@ -38,6 +38,8 @@ public: virtual bool openUrl(const Common::String &url); + virtual Common::String getScreenshotsPath(); + protected: /** * The path of the currently open log file, if any. |