Просмотр исходного кода

Delete ctkPluginActivator on plugin stop.

Sascha Zelzer лет назад: 14
Родитель
Сommit
ef5af58eec
1 измененных файлов с 5 добавлено и 0 удалено
  1. 5 0
      Libs/PluginFramework/ctkPluginPrivate.cpp

+ 5 - 0
Libs/PluginFramework/ctkPluginPrivate.cpp

@@ -274,6 +274,7 @@ void ctkPluginPrivate::stop0(bool wasStarted)
   state = ctkPlugin::STOPPING;
   state = ctkPlugin::STOPPING;
   deactivating = true;
   deactivating = true;
   //6-13:
   //6-13:
+  ctkPluginActivator* activator = 0;
   const std::exception* savedException = 0;
   const std::exception* savedException = 0;
   try
   try
   {
   {
@@ -296,6 +297,7 @@ void ctkPluginPrivate::stop0(bool wasStarted)
       {
       {
         throw std::logic_error("Plugin is uninstalled");
         throw std::logic_error("Plugin is uninstalled");
       }
       }
+      activator = pluginActivator;
       pluginActivator = 0;
       pluginActivator = 0;
     }
     }
 
 
@@ -316,11 +318,14 @@ void ctkPluginPrivate::stop0(bool wasStarted)
     savedException = exc;
     savedException = exc;
   }
   }
 
 
+  delete activator;
+
   if (state != ctkPlugin::UNINSTALLED)
   if (state != ctkPlugin::UNINSTALLED)
   {
   {
     state = ctkPlugin::RESOLVED;
     state = ctkPlugin::RESOLVED;
     deactivating = false;
     deactivating = false;
     //fwCtx.packages.notifyAll();
     //fwCtx.packages.notifyAll();
+    fwCtx->listeners.emitPluginChanged(ctkPluginEvent(ctkPluginEvent::STOPPED, q_func()));
   }
   }
 
 
   if (savedException)
   if (savedException)