From e96c057c3d7d2deb8ff31bc7d798d455f74b399a Mon Sep 17 00:00:00 2001 From: Thierry Crozat Date: Mon, 24 Apr 2017 00:51:57 +0100 Subject: SDL: Allow specifying the screenshot directory in the config file There is no GUI option to set the screenshot directory, but this allows power users to set it if they don't want to use the default. --- backends/platform/sdl/macosx/macosx.cpp | 4 +++- backends/platform/sdl/sdl.cpp | 5 ++++- backends/platform/sdl/win32/win32.cpp | 15 ++++++++++++--- 3 files changed, 19 insertions(+), 5 deletions(-) (limited to 'backends/platform') diff --git a/backends/platform/sdl/macosx/macosx.cpp b/backends/platform/sdl/macosx/macosx.cpp index 500e438ec0..8669bf6a66 100644 --- a/backends/platform/sdl/macosx/macosx.cpp +++ b/backends/platform/sdl/macosx/macosx.cpp @@ -188,7 +188,9 @@ Common::String OSystem_MacOSX::getSystemLanguage() const { } Common::String OSystem_MacOSX::getScreenshotsPath() { - Common::String path = getDesktopPathMacOSX(); + Common::String path = ConfMan.get("screenshotpath"); + if (path.empty()) + path = getDesktopPathMacOSX(); if (!path.empty() && !path.hasSuffix("/")) path += "/"; return path; diff --git a/backends/platform/sdl/sdl.cpp b/backends/platform/sdl/sdl.cpp index 09268f3a53..9a5db7f110 100644 --- a/backends/platform/sdl/sdl.cpp +++ b/backends/platform/sdl/sdl.cpp @@ -573,7 +573,10 @@ Common::SaveFileManager *OSystem_SDL::getSavefileManager() { //Not specified in base class Common::String OSystem_SDL::getScreenshotsPath() { - return Common::String(); + Common::String path = ConfMan.get("screenshotpath"); + if (!path.empty() && !path.hasSuffix("/")) + path += "/"; + return path; } #ifdef USE_OPENGL diff --git a/backends/platform/sdl/win32/win32.cpp b/backends/platform/sdl/win32/win32.cpp index 02ad225749..5724250109 100644 --- a/backends/platform/sdl/win32/win32.cpp +++ b/backends/platform/sdl/win32/win32.cpp @@ -147,13 +147,22 @@ bool OSystem_Win32::openUrl(const Common::String &url) { } Common::String OSystem_Win32::getScreenshotsPath() { + Common::String screenshotsPath = ConfMan.get("screenshotpath"); + if (!screenshotsPath.empty()) { + if (!screenshotsPath.hasSuffix("\\") && !screenshotsPath.hasSuffix("/") + screenshotsPath += "\\"; + return screenshotsPath; + } + 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"); + if (SHGetFolderPath(NULL, CSIDL_MYPICTURES, NULL, SHGFP_TYPE_CURRENT, picturesPath) != S_OK) { + warning("Unable to access My Pictures directory"); + return Common::String(); + } - Common::String screenshotsPath = Common::String(picturesPath) + "\\ScummVM Screenshots\\"; + 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) -- cgit v1.2.3