summaryrefslogtreecommitdiff
path: root/src/mir_app
diff options
context:
space:
mode:
authorGeorge Hazan <ghazan@miranda.im>2018-05-28 14:26:43 +0300
committerGeorge Hazan <ghazan@miranda.im>2018-05-28 14:26:43 +0300
commit0d2a573701b57fed6d7a14b88740fe36441d5cbf (patch)
treec4e5b25dcba287f40549d81a8eb4eea9e27e7005 /src/mir_app
parent410e2f5d9c86ad3052bcba24229d0600eab2d9eb (diff)
useful wrappers for loading / unloading plugins
Diffstat (limited to 'src/mir_app')
-rw-r--r--src/mir_app/src/newplugins.cpp12
-rw-r--r--src/mir_app/src/plugins.h8
2 files changed, 12 insertions, 8 deletions
diff --git a/src/mir_app/src/newplugins.cpp b/src/mir_app/src/newplugins.cpp
index 7fda7cbbd5..f86b76e66b 100644
--- a/src/mir_app/src/newplugins.cpp
+++ b/src/mir_app/src/newplugins.cpp
@@ -255,10 +255,7 @@ void Plugin_Uninit(pluginEntry *p)
{
// if the basic API check had passed, call Unload if Load(void) was ever called
if (p->bLoaded) {
- if (p->bpi.pfnUnload)
- p->bpi.pfnUnload();
- else
- p->bpi.pPlugin->Unload();
+ p->bpi.Unload();
p->bLoaded = false;
}
@@ -395,7 +392,7 @@ pluginEntry* OpenPlugin(wchar_t *tszFileName, wchar_t *dir, wchar_t *path)
// copy the dblink stuff
p->bpi = bpi;
- if (bpi.pfnLoad() != 0)
+ if (bpi.Load() != 0)
p->bFailed = true;
else
p->bLoaded = true;
@@ -506,7 +503,7 @@ bool TryLoadPlugin(pluginEntry *p, bool bDynamic)
// contact list is loaded via clistlink, db - via DATABASELINK
// so we should call Load() only for usual plugins
if (!p->bLoaded && !p->bIsClist && !p->bIsDatabase) {
- if (p->bpi.pfnLoad() != 0)
+ if (p->bpi.Load() != 0)
return false;
p->bLoaded = true;
@@ -640,8 +637,7 @@ int LaunchServicePlugin(pluginEntry *p)
{
// plugin load failed - terminating Miranda
if (!p->bLoaded) {
- int res = (p->bpi.pfnLoad == 0) ? p->bpi.pPlugin->Load() : p->bpi.pfnLoad();
- if (res != ERROR_SUCCESS) {
+ if (p->bpi.Load() != ERROR_SUCCESS) {
Plugin_Uninit(p);
return SERVICE_FAILED;
}
diff --git a/src/mir_app/src/plugins.h b/src/mir_app/src/plugins.h
index c837cb1a16..4354295f0c 100644
--- a/src/mir_app/src/plugins.h
+++ b/src/mir_app/src/plugins.h
@@ -23,6 +23,14 @@ struct BASIC_PLUGIN_INFO
CList_Initialise clistlink;
CMPluginBase* pPlugin;
MUUID* Interfaces; // array of supported interfaces
+
+ int Load()
+ { return (pfnLoad == nullptr) ? pPlugin->Load() : pfnLoad();
+ }
+
+ int Unload()
+ { return (pfnUnload == nullptr) ? pPlugin->Unload() : pfnUnload();
+ }
};
struct pluginEntry