aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--README8
-rw-r--r--backends/platform/sdl/macosx/macosx.cpp7
-rw-r--r--backends/platform/sdl/macosx/macosx.h3
-rw-r--r--backends/platform/sdl/macosx/macosx_wrapper.h1
-rw-r--r--backends/platform/sdl/macosx/macosx_wrapper.mm16
5 files changed, 33 insertions, 2 deletions
diff --git a/README b/README
index 828591b57a..15da89c076 100644
--- a/README
+++ b/README
@@ -2681,8 +2681,12 @@ configuration of each entry, allowing the custom options to be shown.
9.0) Screenshots (SDL backend only):
---- -------------------------------
-By default screenshots are put into the current directory, however on Windows
-the directory for this purpose is set to "Users\username\My Pictures\ScummVM Screenshots".
+On systems using the SDL backend (for example Windows, Mac or Linux) you can use
+alt+s to take snapshots (see section 5.4 - Hotkeys). The location of the created
+screenshot file depends on the OS:
+ Windows: In Users\username\My Pictures\ScummVM Screenshots.
+ macOS X: On the Desktop.
+ Any other OS: In the current directoty.
10.0) Compiling:
diff --git a/backends/platform/sdl/macosx/macosx.cpp b/backends/platform/sdl/macosx/macosx.cpp
index e90d459e67..500e438ec0 100644
--- a/backends/platform/sdl/macosx/macosx.cpp
+++ b/backends/platform/sdl/macosx/macosx.cpp
@@ -187,6 +187,13 @@ Common::String OSystem_MacOSX::getSystemLanguage() const {
#endif // USE_DETECTLANG
}
+Common::String OSystem_MacOSX::getScreenshotsPath() {
+ Common::String path = getDesktopPathMacOSX();
+ if (!path.empty() && !path.hasSuffix("/"))
+ path += "/";
+ return path;
+}
+
AudioCDManager *OSystem_MacOSX::createAudioCDManager() {
return createMacOSXAudioCDManager();
}
diff --git a/backends/platform/sdl/macosx/macosx.h b/backends/platform/sdl/macosx/macosx.h
index 72bb4a4787..ba07364681 100644
--- a/backends/platform/sdl/macosx/macosx.h
+++ b/backends/platform/sdl/macosx/macosx.h
@@ -44,6 +44,9 @@ public:
virtual void initBackend();
virtual void addSysArchivesToSearchSet(Common::SearchSet &s, int priority = 0);
+ //Screenshots
+ virtual Common::String getScreenshotsPath();
+
protected:
// Override createAudioCDManager() to get our Mac-specific
// version.
diff --git a/backends/platform/sdl/macosx/macosx_wrapper.h b/backends/platform/sdl/macosx/macosx_wrapper.h
index 3b346fc486..84f0c1b2ba 100644
--- a/backends/platform/sdl/macosx/macosx_wrapper.h
+++ b/backends/platform/sdl/macosx/macosx_wrapper.h
@@ -27,5 +27,6 @@
bool hasTextInClipboardMacOSX();
Common::String getTextFromClipboardMacOSX();
+Common::String getDesktopPathMacOSX();
#endif
diff --git a/backends/platform/sdl/macosx/macosx_wrapper.mm b/backends/platform/sdl/macosx/macosx_wrapper.mm
index 8ec9eac5ac..5de3eb6bac 100644
--- a/backends/platform/sdl/macosx/macosx_wrapper.mm
+++ b/backends/platform/sdl/macosx/macosx_wrapper.mm
@@ -27,6 +27,8 @@
#include <AppKit/NSPasteboard.h>
#include <Foundation/NSArray.h>
+#include <Foundation/NSPathUtilities.h>
+#include <AvailabilityMacros.h>
bool hasTextInClipboardMacOSX() {
return [[NSPasteboard generalPasteboard] availableTypeFromArray:[NSArray arrayWithObject:NSStringPboardType]] != nil;
@@ -46,3 +48,17 @@ Common::String getTextFromClipboardMacOSX() {
// we should use NSISOLatin1StringEncoding?).
return Common::String([str cStringUsingEncoding:NSASCIIStringEncoding]);
}
+
+Common::String getDesktopPathMacOSX() {
+ // The recommanded method is to use NSFileManager.
+ // NSUrl *url = [[[NSFileManager defaultManager] URLsForDirectory:NSDesktopDirectory inDomains:NSUserDomainMask] firstObject];
+ // However it is only available in OS X 10.6+. So use NSSearchPathForDirectoriesInDomains instead (available since OS X 10.0)
+ // [NSArray firstObject] is also only available in OS X 10.6+. So we need to use [NSArray count] and [NSArray objectAtIndex:]
+ NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDesktopDirectory, NSUserDomainMask, NO);
+ if ([paths count] == 0)
+ return Common::String();
+ NSString *path = [paths objectAtIndex:0];
+ if (path == nil)
+ return Common::String();
+ return Common::String([path cStringUsingEncoding:NSASCIIStringEncoding]);
+} \ No newline at end of file