diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/modules/database/profilemanager.cpp | 5 | ||||
-rw-r--r-- | src/modules/plugins/newplugins.cpp | 20 |
2 files changed, 17 insertions, 8 deletions
diff --git a/src/modules/database/profilemanager.cpp b/src/modules/database/profilemanager.cpp index 3238f14e87..e85b64a578 100644 --- a/src/modules/database/profilemanager.cpp +++ b/src/modules/database/profilemanager.cpp @@ -26,7 +26,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #include "profilemanager.h"
#include <sys/stat.h>
-void EnsureCheckerLoaded(void);
+void EnsureCheckerLoaded(bool);
#define WM_INPUTCHANGED (WM_USER + 0x3000)
#define WM_FOCUSTEXTBOX (WM_USER + 0x3001)
@@ -344,7 +344,7 @@ static INT_PTR CALLBACK DlgProfileSelect(HWND hwndDlg, UINT msg, WPARAM wParam, switch (msg) {
case WM_INITDIALOG:
TranslateDialogDefault(hwndDlg);
- EnsureCheckerLoaded();
+ EnsureCheckerLoaded(true);
{
dat = (DlgProfData*) lParam;
SetWindowLongPtr(hwndDlg, GWLP_USERDATA, (LONG_PTR)dat);
@@ -724,6 +724,7 @@ static INT_PTR CALLBACK DlgProfileManager(HWND hwndDlg, UINT msg, WPARAM wParam, break;
case WM_DESTROY:
+ EnsureCheckerLoaded(false); // unload dbchecker
{
LRESULT curSel = SendDlgItemMessage(hwndDlg, IDC_SM_COMBO, CB_GETCURSEL, 0, 0);
if (curSel != CB_ERR) {
diff --git a/src/modules/plugins/newplugins.cpp b/src/modules/plugins/newplugins.cpp index f583b2aa09..359b2705e3 100644 --- a/src/modules/plugins/newplugins.cpp +++ b/src/modules/plugins/newplugins.cpp @@ -632,18 +632,26 @@ int LoadServiceModePlugin() return (serviceModePlugin == NULL) ? SERVICE_CONTINUE : LaunchServicePlugin(serviceModePlugin);
}
-void EnsureCheckerLoaded(void)
+void EnsureCheckerLoaded(bool bEnable)
{
for (int i=0; i < servicePlugins.getCount(); i++) {
pluginEntry* p = servicePlugins[i];
if ( _tcsicmp(p->pluginname, _T("dbchecker.dll")))
continue;
- if ( !(p->pclass & PCLASS_LOADED)) {
- if (p->bpi.Load() != ERROR_SUCCESS)
- Plugin_Uninit(p);
- else
- p->pclass |= PCLASS_LOADED;
+ if (bEnable) {
+ if ( !(p->pclass & PCLASS_LOADED)) {
+ if (p->bpi.Load() != ERROR_SUCCESS)
+ Plugin_Uninit(p);
+ else
+ p->pclass |= PCLASS_LOADED;
+ }
+ }
+ else {
+ if (p->pclass & PCLASS_LOADED) {
+ p->bpi.Unload();
+ p->pclass &= ~PCLASS_LOADED;
+ }
}
break;
}
|