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");

_______________________________________________
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to