X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=NativeLauncher%2Futil%2Fplugin_manager.cc;h=e4025769ee9ef780733bff76dd6730d81f28ab07;hb=eb3374a3902c4a9a3539b16161c39e877a896c5d;hp=44b401db9c2185ece818e33c63847e5755377649;hpb=0727ca64ea80a2ca5588c849c4ed164649173cb3;p=platform%2Fcore%2Fdotnet%2Flauncher.git diff --git a/NativeLauncher/util/plugin_manager.cc b/NativeLauncher/util/plugin_manager.cc index 44b401d..e402576 100644 --- a/NativeLauncher/util/plugin_manager.cc +++ b/NativeLauncher/util/plugin_manager.cc @@ -13,6 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + #include #include "plugin_manager.h" @@ -21,13 +22,17 @@ static PluginFunc* __pluginFunc = NULL; static void* __pluginLib; - -#define PLUGIN_PATH "/usr/share/dotnet.tizen/lib/libdotnet_plugin.so" +bool initializedPluginManager = false; int initializePluginManager(const char* mode) { - if (isFileExist(PLUGIN_PATH)) { - __pluginLib = dlopen(PLUGIN_PATH, RTLD_NOW | RTLD_LOCAL); + if (initializedPluginManager) { + _INFO("Plugin manager already initialized"); + return 0; + } + + if (isFile(PLUGIN_PATH)) { + __pluginLib = dlopen(PLUGIN_PATH, RTLD_NOW | RTLD_LOCAL | RTLD_NODELETE); if (__pluginLib) { __pluginFunc = (PluginFunc*)calloc(sizeof(PluginFunc), 1); if (!__pluginFunc) { @@ -40,6 +45,7 @@ int initializePluginManager(const char* mode) __pluginFunc->set_app_info = (plugin_set_app_info_ptr)dlsym(__pluginLib, "plugin_set_app_info"); __pluginFunc->set_coreclr_info = (plugin_set_coreclr_info_ptr)dlsym(__pluginLib, "plugin_set_coreclr_info"); __pluginFunc->get_dll_path = (plugin_get_dll_path_ptr)dlsym(__pluginLib, "plugin_get_dll_path"); + __pluginFunc->get_tpa = (plugin_get_tpa_ptr)dlsym(__pluginLib, "plugin_get_tpa"); __pluginFunc->before_execute = (plugin_before_execute_ptr)dlsym(__pluginLib, "plugin_before_execute"); __pluginFunc->finalize = (plugin_finalize_ptr)dlsym(__pluginLib, "plugin_finalize"); } @@ -50,6 +56,7 @@ int initializePluginManager(const char* mode) _INFO("Plugin manager initialize success"); + initializedPluginManager = true; return 0; } @@ -65,6 +72,8 @@ void finalizePluginManager() dlclose(__pluginLib); __pluginLib = NULL; } + + initializedPluginManager = false; } void pluginPreload() @@ -106,6 +115,15 @@ char* pluginGetDllPath() } } +char* pluginGetTPA() +{ + if (__pluginFunc && __pluginFunc->get_tpa) { + return __pluginFunc->get_tpa(); + } else { + return NULL; + } +} + void pluginBeforeExecute() { if (__pluginFunc && __pluginFunc->before_execute) { @@ -119,4 +137,3 @@ void pluginFinalize() __pluginFunc->finalize(); } } -