[QGIS Commit] r9249 - trunk/qgis/src/app

svn_qgis at osgeo.org svn_qgis at osgeo.org
Tue Sep 2 14:56:23 EDT 2008


Author: jef
Date: 2008-09-02 14:56:23 -0400 (Tue, 02 Sep 2008)
New Revision: 9249

Modified:
   trunk/qgis/src/app/qgisapp.cpp
   trunk/qgis/src/app/qgspluginregistry.cpp
   trunk/qgis/src/app/qgspluginregistry.h
Log:
unload plugins on quit (fixes #808)

Modified: trunk/qgis/src/app/qgisapp.cpp
===================================================================
--- trunk/qgis/src/app/qgisapp.cpp	2008-09-02 17:17:25 UTC (rev 9248)
+++ trunk/qgis/src/app/qgisapp.cpp	2008-09-02 18:56:23 UTC (rev 9249)
@@ -1740,6 +1740,8 @@
 
 void QgisApp::saveWindowState()
 {
+  QgsPluginRegistry::instance()->unloadAll();
+
   // store window and toolbar positions
   QSettings settings;
   // store the toolbar/dock widget settings using Qt4 settings API

Modified: trunk/qgis/src/app/qgspluginregistry.cpp
===================================================================
--- trunk/qgis/src/app/qgspluginregistry.cpp	2008-09-02 17:17:25 UTC (rev 9248)
+++ trunk/qgis/src/app/qgspluginregistry.cpp	2008-09-02 18:56:23 UTC (rev 9249)
@@ -19,6 +19,7 @@
 
 #include "qgspluginregistry.h"
 #include "qgspluginmetadata.h"
+#include "qgisplugin.h"
 
 QgsPluginRegistry *QgsPluginRegistry::_instance = 0;
 QgsPluginRegistry *QgsPluginRegistry::instance()
@@ -85,3 +86,12 @@
 {
   plugins.erase( name );
 }
+
+void QgsPluginRegistry::unloadAll()
+{
+  for(std::map<QString, QgsPluginMetadata*>::iterator it=plugins.begin(); 
+      it!=plugins.end();
+      it++)
+    if( it->second->plugin() )
+      it->second->plugin()->unload();
+}

Modified: trunk/qgis/src/app/qgspluginregistry.h
===================================================================
--- trunk/qgis/src/app/qgspluginregistry.h	2008-09-02 17:17:25 UTC (rev 9248)
+++ trunk/qgis/src/app/qgspluginregistry.h	2008-09-02 18:56:23 UTC (rev 9249)
@@ -47,6 +47,8 @@
     void addPythonPlugin( QString packageName, QString pluginName );
 //! Remove a plugin from the list of loaded plugins
     void removePlugin( QString name );
+//! Unload plugins
+    void unloadAll();
   protected:
 //! protected constructor
     QgsPluginRegistry();
@@ -55,4 +57,3 @@
     std::map<QString, QgsPluginMetadata*> plugins;
 };
 #endif //QgsPluginRegistry_H
-



More information about the QGIS-commit mailing list