[Bf-blender-cvs] [ae1d416] blender-v2.73-release: OSX: revive GHOST_HACK_getFirstFile cause it breaks things on older OSX versions. Dunno exactly why this was done earlier, but propose not to remove code not understood.

Jens Verwiebe noreply at git.blender.org
Tue Jan 6 10:44:34 CET 2015


Commit: ae1d416aecbc916259265f70a246af0d59538fb6
Author: Jens Verwiebe
Date:   Thu Dec 25 15:12:56 2014 +0100
Branches: blender-v2.73-release
https://developer.blender.org/rBae1d416aecbc916259265f70a246af0d59538fb6

OSX: revive GHOST_HACK_getFirstFile cause it breaks things on older OSX versions.
Dunno exactly why this was done earlier, but propose not to remove code not understood.

===================================================================

M	intern/ghost/intern/GHOST_SystemCocoa.mm
M	source/creator/creator.c
M	source/gameengine/GamePlayer/ghost/GPG_ghost.cpp

===================================================================

diff --git a/intern/ghost/intern/GHOST_SystemCocoa.mm b/intern/ghost/intern/GHOST_SystemCocoa.mm
index cfa1e8b..61caf3f 100644
--- a/intern/ghost/intern/GHOST_SystemCocoa.mm
+++ b/intern/ghost/intern/GHOST_SystemCocoa.mm
@@ -255,6 +255,24 @@ static GHOST_TKey convertKey(int rawCode, unichar recvChar, UInt16 keyAction)
 	return GHOST_kKeyUnknown;
 }
 
+#pragma mark Utility functions
+
+#define FIRSTFILEBUFLG 512
+static bool g_hasFirstFile = false;
+static char g_firstFileBuf[512];
+
+//TODO:Need to investigate this. Function called too early in creator.c to have g_hasFirstFile == true
+extern "C" int GHOST_HACK_getFirstFile(char buf[FIRSTFILEBUFLG])
+{
+	if (g_hasFirstFile) {
+		strncpy(buf, g_firstFileBuf, FIRSTFILEBUFLG - 1);
+		buf[FIRSTFILEBUFLG - 1] = '\0';
+		return 1;
+	}
+	else {
+	return 0;
+	}
+}
 
 #pragma mark Cocoa objects
 
diff --git a/source/creator/creator.c b/source/creator/creator.c
index efef309..cc80494 100644
--- a/source/creator/creator.c
+++ b/source/creator/creator.c
@@ -1001,7 +1001,7 @@ static int render_animation(int UNUSED(argc), const char **UNUSED(argv), void *d
 		BLI_end_threaded_malloc();
 	}
 	else {
-		printf("\nError: no blend loaded. cannot use '-a'.\n");
+		printf("\nError: no blend loaded. GPG_ghost.cpp use '-a'.\n");
 	}
 	return 0;
 }
@@ -1551,7 +1551,22 @@ int main(
 #endif
 
 	setCallbacks();
+	
+#if defined(__APPLE__) && !defined(WITH_PYTHON_MODULE)
+/* patch to ignore argument finder gives us (pid?) */
+	if (argc == 2 && strncmp(argv[1], "-psn_", 5) == 0) {
+		extern int GHOST_HACK_getFirstFile(char buf[]);
+		static char firstfilebuf[512];
+
+		argc = 1;
 
+		if (GHOST_HACK_getFirstFile(firstfilebuf)) {
+			argc = 2;
+			argv[1] = firstfilebuf;
+		}
+	}
+#endif
+	
 #ifdef __FreeBSD__
 	fpsetmask(0);
 #endif
diff --git a/source/gameengine/GamePlayer/ghost/GPG_ghost.cpp b/source/gameengine/GamePlayer/ghost/GPG_ghost.cpp
index 3e87b4a..915fe61 100644
--- a/source/gameengine/GamePlayer/ghost/GPG_ghost.cpp
+++ b/source/gameengine/GamePlayer/ghost/GPG_ghost.cpp
@@ -80,6 +80,10 @@ extern "C"
 #include "IMB_imbuf.h"
 #include "IMB_moviecache.h"
 	
+#ifdef __APPLE__
+	int GHOST_HACK_getFirstFile(char buf[]);
+#endif
+	
 // For BLF
 #include "BLF_api.h"
 #include "BLF_translation.h"
@@ -297,6 +301,12 @@ static void get_filename(int argc, char **argv, char *filename)
 		if (BLI_exists(argv[argc-1])) {
 			BLI_strncpy(filename, argv[argc-1], FILE_MAX);
 		}
+		if (::strncmp(argv[argc-1], "-psn_", 5)==0) {
+			static char firstfilebuf[512];
+			if (GHOST_HACK_getFirstFile(firstfilebuf)) {
+				BLI_strncpy(filename, firstfilebuf, FILE_MAX);
+			}
+		}
 	}
 	
 	srclen -= ::strlen("MacOS/blenderplayer");




More information about the Bf-blender-cvs mailing list