Commit 628d8edb95385a02fcb0941f776fda3442fdb179

Alfred Reynolds 2015-07-29T17:19:15

SDL - add a new SDL_HINT_MAC_BACKGROUND_APP hint, when set or set to 1 don't force the app to be foreground

diff --git a/include/SDL_hints.h b/include/SDL_hints.h
index 3da3ec3..5484687 100644
--- a/include/SDL_hints.h
+++ b/include/SDL_hints.h
@@ -526,6 +526,14 @@ extern "C" {
 #define SDL_HINT_VIDEO_MAC_FULLSCREEN_SPACES    "SDL_VIDEO_MAC_FULLSCREEN_SPACES"
 
 /**
+*  \brief  When set don't force the SDL app to become a foreground process
+*
+*  This hint only applies to Mac OS X.
+*
+*/
+#define SDL_HINT_MAC_BACKGROUND_APP    "SDL_MAC_BACKGROUND_APP"
+    
+/**
  * \brief Android APK expansion main file version. Should be a string number like "1", "2" etc.
  */
 #define SDL_HINT_ANDROID_APK_EXPANSION_MAIN_FILE_VERSION "SDL_ANDROID_APK_EXPANSION_MAIN_FILE_VERSION"
diff --git a/src/video/cocoa/SDL_cocoaevents.m b/src/video/cocoa/SDL_cocoaevents.m
index 6305629..bf15e2a 100644
--- a/src/video/cocoa/SDL_cocoaevents.m
+++ b/src/video/cocoa/SDL_cocoaevents.m
@@ -26,6 +26,7 @@
 #include "SDL_cocoavideo.h"
 #include "../../events/SDL_events_c.h"
 #include "SDL_assert.h"
+#include "SDL_hints.h"
 
 /* This define was added in the 10.9 SDK. */
 #ifndef kIOPMAssertPreventUserIdleDisplaySleep
@@ -318,19 +319,21 @@ Cocoa_RegisterApp(void)
         [SDLApplication sharedApplication];
         SDL_assert(NSApp != nil);
 
+        const char *hint = SDL_GetHint(SDL_HINT_MAC_BACKGROUND_APP);
+		if (!hint && *hint != '0') {
 #if MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_6
-        if ([NSApp respondsToSelector:@selector(setActivationPolicy:)]) {
+			if ([NSApp respondsToSelector:@selector(setActivationPolicy:)]) {
 #endif
-            [NSApp setActivationPolicy:NSApplicationActivationPolicyRegular];
+				[NSApp setActivationPolicy:NSApplicationActivationPolicyRegular];
 #if MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_6
-        } else {
-            ProcessSerialNumber psn = {0, kCurrentProcess};
-            TransformProcessType(&psn, kProcessTransformToForegroundApplication);
-        }
+			} else {
+				ProcessSerialNumber psn = {0, kCurrentProcess};
+				TransformProcessType(&psn, kProcessTransformToForegroundApplication);
+			}
 #endif
-
-        [NSApp activateIgnoringOtherApps:YES];
-
+            [NSApp activateIgnoringOtherApps:YES];
+		}
+		
         if ([NSApp mainMenu] == nil) {
             CreateApplicationMenus();
         }