diff options
author | Jean-Luc Peurière <jlp@nerim.net> | 2007-07-19 01:16:07 +0400 |
---|---|---|
committer | Jean-Luc Peurière <jlp@nerim.net> | 2007-07-19 01:16:07 +0400 |
commit | 256de79f51889067626514d974423a07a50dfdf3 (patch) | |
tree | 6e32b859ad9fa08c82a5402ba3e757a89f6bb191 /source | |
parent | 603da178b9242522e271c0f44bc8c00958b6e05b (diff) |
commiting ettore fourth patch (plugin path)
Diffstat (limited to 'source')
-rw-r--r-- | source/blender/blenlib/BLI_blenlib.h | 1 | ||||
-rw-r--r-- | source/blender/blenloader/intern/writefile.c | 2 | ||||
-rw-r--r-- | source/blender/src/ghostwinlay.c | 56 |
3 files changed, 46 insertions, 13 deletions
diff --git a/source/blender/blenlib/BLI_blenlib.h b/source/blender/blenlib/BLI_blenlib.h index 6e51d171461..75a0e7b49a1 100644 --- a/source/blender/blenlib/BLI_blenlib.h +++ b/source/blender/blenlib/BLI_blenlib.h @@ -247,6 +247,7 @@ void BLI_free_file_lines(struct LinkNode *lines); */ void BLI_where_am_i(char *fullname, char *name); +char *get_install_dir(void); /** * determines the full path to the application bundle on OS X * diff --git a/source/blender/blenloader/intern/writefile.c b/source/blender/blenloader/intern/writefile.c index 226561ab97b..9ab1321b45e 100644 --- a/source/blender/blenloader/intern/writefile.c +++ b/source/blender/blenloader/intern/writefile.c @@ -1981,7 +1981,7 @@ int BLO_write_file_mem(MemFile *compare, MemFile *current, int write_flags, char #define PATHSEPERATOR "/" #endif -static char *get_install_dir(void) { +char *get_install_dir(void) { extern char bprogname[]; char *tmpname = BLI_strdup(bprogname); char *cut; diff --git a/source/blender/src/ghostwinlay.c b/source/blender/src/ghostwinlay.c index 0a04b0b8003..60cbc4d89ba 100644 --- a/source/blender/src/ghostwinlay.c +++ b/source/blender/src/ghostwinlay.c @@ -889,21 +889,53 @@ Window *winlay_get_active_window(void) { return active_gl_window; } -void window_open_ndof(Window* win) -{ - PILdynlib* ndofLib = PIL_dynlib_open("XXXXXXX-PUT-HERE-YOUR-PATH-TO-THE-PLUG--/spaceplug.plug"); - if (ndofLib) { +#ifdef _WIN32 +#define PATH_SEP "\\" +#else +#define PATH_SEP "/" +#endif - GHOST_OpenNDOF(g_system, win->ghostwin, - PIL_dynlib_find_symbol(ndofLib, "ndofInit"), - PIL_dynlib_find_symbol(ndofLib, "ndofShutdown"), - PIL_dynlib_find_symbol(ndofLib, "ndofOpen")); -// original patch only -// PIL_dynlib_find_symbol(ndofLib, "ndofEventHandler")); - } +void window_open_ndof(Window* win) +{ + char *inst_path, *plug_path; + const char *plug_dir = "plugins"; + const char *plug_name = "3DxNdofBlender.plug"; + PILdynlib *ndofLib; + + // build the plugin path + plug_path = NULL; + inst_path = get_install_dir(); // path to main blender exec/bundle + if (inst_path) { + // assume the ndof plugin is located in the plug-in dir + size_t len = strlen(inst_path) + strlen(plug_dir) + strlen(PATH_SEP)*2 + + strlen(plug_name) + 1; + plug_path = MEM_mallocN(len, "ndofpluginpath"); + if (plug_path) { + strncpy(plug_path, inst_path, len); + strcat(plug_path, PATH_SEP); + strcat(plug_path, plug_dir); + strcat(plug_path, PATH_SEP); + strcat(plug_path, plug_name); + } + MEM_freeN(inst_path); + } + + ndofLib = PIL_dynlib_open(plug_path); +#if 0 + fprintf(stderr, "plugin path=%s; ndofLib=%p\n", plug_path, (void*)ndofLib); +#endif + + if (plug_path) + MEM_freeN(plug_path); + + if (ndofLib) { + GHOST_OpenNDOF(g_system, win->ghostwin, + PIL_dynlib_find_symbol(ndofLib, "ndofInit"), + PIL_dynlib_find_symbol(ndofLib, "ndofShutdown"), + PIL_dynlib_find_symbol(ndofLib, "ndofOpen")); + } else { -// GHOST_OpenNDOF(g_system, win->ghostwin, 0, 0, 0, 0); GHOST_OpenNDOF(g_system, win->ghostwin, 0, 0, 0); } } |