From 4eb1b5256e0159f747c055e10bd091a40fc834b7 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Fri, 6 May 2011 15:17:42 +0000 Subject: Code cleanup: PIL_dynlib, renamed to BLI_dynlib, and other tweaks. --- source/blender/blenkernel/intern/seqeffects.c | 24 +++--- source/blender/blenkernel/intern/texture.c | 19 +++-- source/blender/blenlib/BLI_dynlib.h | 45 +++++++++++ source/blender/blenlib/CMakeLists.txt | 2 +- source/blender/blenlib/PIL_dynlib.h | 57 -------------- source/blender/blenlib/intern/dynlib.c | 103 ++++++++++++-------------- 6 files changed, 114 insertions(+), 136 deletions(-) create mode 100644 source/blender/blenlib/BLI_dynlib.h delete mode 100644 source/blender/blenlib/PIL_dynlib.h diff --git a/source/blender/blenkernel/intern/seqeffects.c b/source/blender/blenkernel/intern/seqeffects.c index aa91cff03b9..6f49155c0fd 100644 --- a/source/blender/blenkernel/intern/seqeffects.c +++ b/source/blender/blenkernel/intern/seqeffects.c @@ -37,7 +37,7 @@ #include #include "MEM_guardedalloc.h" -#include "PIL_dynlib.h" +#include "BLI_dynlib.h" #include "BLI_math.h" /* windows needs for M_PI */ #include "BLI_utildefines.h" @@ -138,18 +138,18 @@ static void open_plugin_seq(PluginSeq *pis, const char *seqname) pis->instance_private_data = NULL; /* clear the error list */ - PIL_dynlib_get_error_as_string(NULL); + BLI_dynlib_get_error_as_string(NULL); - /* if(pis->handle) PIL_dynlib_close(pis->handle); */ + /* if(pis->handle) BLI_dynlib_close(pis->handle); */ /* pis->handle= 0; */ /* open the needed object */ - pis->handle= PIL_dynlib_open(pis->name); + pis->handle= BLI_dynlib_open(pis->name); if(test_dlerr(pis->name, pis->name)) return; if (pis->handle != NULL) { /* find the address of the version function */ - version= (int (*)(void))PIL_dynlib_find_symbol(pis->handle, "plugin_seq_getversion"); + version= (int (*)(void))BLI_dynlib_find_symbol(pis->handle, "plugin_seq_getversion"); if (test_dlerr(pis->name, "plugin_seq_getversion")) return; if (version != NULL) { @@ -158,7 +158,7 @@ static void open_plugin_seq(PluginSeq *pis, const char *seqname) int (*info_func)(PluginInfo *); PluginInfo *info= (PluginInfo*) MEM_mallocN(sizeof(PluginInfo), "plugin_info"); - info_func= (int (*)(PluginInfo *))PIL_dynlib_find_symbol(pis->handle, "plugin_getinfo"); + info_func= (int (*)(PluginInfo *))BLI_dynlib_find_symbol(pis->handle, "plugin_getinfo"); if(info_func == NULL) error("No info func"); else { @@ -176,21 +176,21 @@ static void open_plugin_seq(PluginSeq *pis, const char *seqname) } MEM_freeN(info); - cp= PIL_dynlib_find_symbol(pis->handle, "seqname"); + cp= BLI_dynlib_find_symbol(pis->handle, "seqname"); if(cp) strncpy(cp, seqname, 21); } else { printf ("Plugin returned unrecognized version number\n"); return; } } - alloc_private = (void* (*)(void))PIL_dynlib_find_symbol( + alloc_private = (void* (*)(void))BLI_dynlib_find_symbol( pis->handle, "plugin_seq_alloc_private_data"); if (alloc_private) { pis->instance_private_data = alloc_private(); } pis->current_private_data = (void**) - PIL_dynlib_find_symbol( + BLI_dynlib_find_symbol( pis->handle, "plugin_private_data"); } } @@ -229,12 +229,12 @@ static void free_plugin_seq(PluginSeq *pis) { if(pis==NULL) return; - /* no PIL_dynlib_close: same plugin can be opened multiple times with 1 handle */ + /* no BLI_dynlib_close: same plugin can be opened multiple times with 1 handle */ if (pis->instance_private_data) { void (*free_private)(void *); - free_private = (void (*)(void *))PIL_dynlib_find_symbol( + free_private = (void (*)(void *))BLI_dynlib_find_symbol( pis->handle, "plugin_seq_free_private_data"); if (free_private) { free_private(pis->instance_private_data); @@ -301,7 +301,7 @@ static struct ImBuf * do_plugin_effect( if(seq->plugin->cfra) *(seq->plugin->cfra)= cfra; - cp = PIL_dynlib_find_symbol( + cp = BLI_dynlib_find_symbol( seq->plugin->handle, "seqname"); if(cp) strncpy(cp, seq->name+2, 22); diff --git a/source/blender/blenkernel/intern/texture.c b/source/blender/blenkernel/intern/texture.c index 866874ee5c8..9cd07de31dc 100644 --- a/source/blender/blenkernel/intern/texture.c +++ b/source/blender/blenkernel/intern/texture.c @@ -41,9 +41,8 @@ #include "MEM_guardedalloc.h" -#include "PIL_dynlib.h" - #include "BLI_blenlib.h" +#include "BLI_dynlib.h" #include "BLI_math.h" #include "BLI_kdopbvh.h" #include "BLI_utildefines.h" @@ -82,7 +81,7 @@ int test_dlerr(const char *name, const char *symbol) { char *err; - err= PIL_dynlib_get_error_as_string(NULL); + err= BLI_dynlib_get_error_as_string(NULL); if(err) { printf("var1: %s, var2: %s, var3: %s\n", name, symbol, err); return 1; @@ -108,19 +107,19 @@ void open_plugin_tex(PluginTex *pit) pit->instance_init= NULL; /* clear the error list */ - PIL_dynlib_get_error_as_string(NULL); + BLI_dynlib_get_error_as_string(NULL); - /* no PIL_dynlib_close! multiple opened plugins... */ - /* if(pit->handle) PIL_dynlib_close(pit->handle); */ + /* no BLI_dynlib_close! multiple opened plugins... */ + /* if(pit->handle) BLI_dynlib_close(pit->handle); */ /* pit->handle= 0; */ /* open the needed object */ - pit->handle= PIL_dynlib_open(pit->name); + pit->handle= BLI_dynlib_open(pit->name); if(test_dlerr(pit->name, pit->name)) return; if (pit->handle != NULL) { /* find the address of the version function */ - version= (int (*)(void)) PIL_dynlib_find_symbol(pit->handle, "plugin_tex_getversion"); + version= (int (*)(void)) BLI_dynlib_find_symbol(pit->handle, "plugin_tex_getversion"); if (test_dlerr(pit->name, "plugin_tex_getversion")) return; if (version != NULL) { @@ -129,7 +128,7 @@ void open_plugin_tex(PluginTex *pit) int (*info_func)(PluginInfo *); PluginInfo *info= (PluginInfo*) MEM_mallocN(sizeof(PluginInfo), "plugin_info"); - info_func= (int (*)(PluginInfo *))PIL_dynlib_find_symbol(pit->handle, "plugin_getinfo"); + info_func= (int (*)(PluginInfo *))BLI_dynlib_find_symbol(pit->handle, "plugin_getinfo"); if (!test_dlerr(pit->name, "plugin_getinfo")) { info->instance_init = NULL; @@ -200,7 +199,7 @@ void free_plugin_tex(PluginTex *pit) { if(pit==NULL) return; - /* no PIL_dynlib_close: same plugin can be opened multiple times, 1 handle */ + /* no BLI_dynlib_close: same plugin can be opened multiple times, 1 handle */ MEM_freeN(pit); } diff --git a/source/blender/blenlib/BLI_dynlib.h b/source/blender/blenlib/BLI_dynlib.h new file mode 100644 index 00000000000..f269bedd639 --- /dev/null +++ b/source/blender/blenlib/BLI_dynlib.h @@ -0,0 +1,45 @@ +/* + * $Id$ + * + * ***** BEGIN GPL LICENSE BLOCK ***** + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. + * All rights reserved. + * + * The Original Code is: all of this file. + * + * Contributor(s): none yet. + * + * ***** END GPL LICENSE BLOCK ***** + */ + +/** \file blender/blenlib/BLI_dynlib.h + * \ingroup bli + */ + +#ifndef __BLI_DYNLIB_H__ +#define __BLI_DYNLIB_H__ + +typedef struct DynamicLibrary DynamicLibrary; + +DynamicLibrary *BLI_dynlib_open(char *name); +void *BLI_dynlib_find_symbol(DynamicLibrary* lib, const char *symname); +char *BLI_dynlib_get_error_as_string(DynamicLibrary* lib); +void BLI_dynlib_close(DynamicLibrary* lib); + +#endif /* __BLI_DYNLIB_H__ */ + diff --git a/source/blender/blenlib/CMakeLists.txt b/source/blender/blenlib/CMakeLists.txt index d5ed8956f7a..b7827d62851 100644 --- a/source/blender/blenlib/CMakeLists.txt +++ b/source/blender/blenlib/CMakeLists.txt @@ -88,6 +88,7 @@ set(SRC BLI_bpath.h BLI_cpu.h BLI_dlrbTree.h + BLI_dynlib.h BLI_dynstr.h BLI_edgehash.h BLI_editVert.h @@ -127,7 +128,6 @@ set(SRC BLI_vfontdata.h BLI_voxel.h BLI_winstuff.h - PIL_dynlib.h PIL_time.h intern/BLI_callbacks.h intern/dynamiclist.h diff --git a/source/blender/blenlib/PIL_dynlib.h b/source/blender/blenlib/PIL_dynlib.h deleted file mode 100644 index 5569954c116..00000000000 --- a/source/blender/blenlib/PIL_dynlib.h +++ /dev/null @@ -1,57 +0,0 @@ -/* - * $Id$ - * - * ***** BEGIN GPL LICENSE BLOCK ***** - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software Foundation, - * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - * - * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. - * All rights reserved. - * - * The Original Code is: all of this file. - * - * Contributor(s): none yet. - * - * ***** END GPL LICENSE BLOCK ***** - */ - -/** \file blender/blenlib/PIL_dynlib.h - * \ingroup bli - */ - -#ifndef __PIL_DYNLIB_H__ -#define __PIL_DYNLIB_H__ - -typedef struct PILdynlib PILdynlib; - - PILdynlib* -PIL_dynlib_open( - char *name); - - void* -PIL_dynlib_find_symbol( - PILdynlib* lib, - const char *symname); - - char* -PIL_dynlib_get_error_as_string( - PILdynlib* lib); - - void -PIL_dynlib_close( - PILdynlib* lib); - -#endif /* __PIL_DYNLIB_H__ */ - diff --git a/source/blender/blenlib/intern/dynlib.c b/source/blender/blenlib/intern/dynlib.c index 855fa2dfbf9..ae6589b6538 100644 --- a/source/blender/blenlib/intern/dynlib.c +++ b/source/blender/blenlib/intern/dynlib.c @@ -31,110 +31,101 @@ * \ingroup bli */ - +#include #include +#include -#include "../PIL_dynlib.h" +#include "MEM_guardedalloc.h" -#if !defined(CHAR_MAX) -#define CHAR_MAX 255 -#endif +#include "BLI_dynlib.h" + +struct DynamicLibrary { + void *handle; +}; -/* - * XXX, should use mallocN so we can see - * handle's not being released. fixme zr - */ - #ifdef WIN32 -#include -#include #include -struct PILdynlib { - void *handle; -}; - -PILdynlib *PIL_dynlib_open(char *name) { +DynamicLibrary *BLI_dynlib_open(char *name) +{ + DynamicLibrary *lib; void *handle= LoadLibrary(name); - if (handle) { - PILdynlib *lib= malloc(sizeof(*lib)); - lib->handle= handle; - - return lib; - } else { + if(!handle) return NULL; - } + + lib= MEM_callocN(sizeof(*lib), "Dynamic Library"); + lib->handle= handle; + + return lib; } -void *PIL_dynlib_find_symbol(PILdynlib* lib, const char *symname) { +void *BLI_dynlib_find_symbol(DynamicLibrary *lib, const char *symname) +{ return GetProcAddress(lib->handle, symname); } -char *PIL_dynlib_get_error_as_string(PILdynlib* lib) { +char *BLI_dynlib_get_error_as_string(DynamicLibrary *lib) +{ int err; /* if lib is NULL reset the last error code */ err= GetLastError(); - if (!lib) SetLastError(ERROR_SUCCESS); + if(!lib) + SetLastError(ERROR_SUCCESS); - if (err) { + if(err) { static char buf[1024]; - if (FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM|FORMAT_MESSAGE_IGNORE_INSERTS, - NULL, - err, - MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), - buf, - sizeof(buf), - NULL)) + if(FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM|FORMAT_MESSAGE_IGNORE_INSERTS, + NULL, err, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), + buf, sizeof(buf), NULL)) return buf; } return NULL; } -void PIL_dynlib_close(PILdynlib *lib) { +void BLI_dynlib_close(DynamicLibrary *lib) +{ FreeLibrary(lib->handle); - - free(lib); + MEM_freeN(lib); } -#else /* Unix */ +#else /* Unix */ #include -struct PILdynlib { - void *handle; -}; - -PILdynlib *PIL_dynlib_open(char *name) { +DynamicLibrary *BLI_dynlib_open(char *name) +{ + DynamicLibrary *lib; void *handle= dlopen(name, RTLD_LAZY); - if (handle) { - PILdynlib *lib= malloc(sizeof(*lib)); - lib->handle= handle; - - return lib; - } else { + if(!handle) return NULL; - } + + lib= MEM_callocN(sizeof(*lib), "Dynamic Library"); + lib->handle= handle; + + return lib; } -void *PIL_dynlib_find_symbol(PILdynlib* lib, const char *symname) { +void *BLI_dynlib_find_symbol(DynamicLibrary *lib, const char *symname) +{ return dlsym(lib->handle, symname); } -char *PIL_dynlib_get_error_as_string(PILdynlib* lib) { +char *BLI_dynlib_get_error_as_string(DynamicLibrary *lib) +{ (void)lib; /* unused */ return dlerror(); } -void PIL_dynlib_close(PILdynlib *lib) { +void BLI_dynlib_close(DynamicLibrary *lib) +{ dlclose(lib->handle); - - free(lib); + MEM_freeN(lib); } #endif -- cgit v1.2.3