Destroy generic plugins on exit.
authorLaszlo Agocs <laszlo.p.agocs@nokia.com>
Tue, 18 Oct 2011 06:07:46 +0000 (09:07 +0300)
committerQt by Nokia <qt-info@nokia.com>
Wed, 19 Oct 2011 06:52:05 +0000 (08:52 +0200)
Change-Id: I9037cabae74f9a7d8743630d0f530aaa1593266f
Reviewed-by: Paul Olav Tvete <paul.tvete@nokia.com>
src/gui/kernel/qguiapplication.cpp
src/gui/kernel/qguiapplication_p.h

index a16685e..ee32924 100644 (file)
@@ -90,6 +90,8 @@ QPointF QGuiApplicationPrivate::lastCursorPosition(0.0, 0.0);
 
 QPlatformIntegration *QGuiApplicationPrivate::platform_integration = 0;
 
+QList<QObject *> QGuiApplicationPrivate::generic_plugin_list;
+
 bool QGuiApplicationPrivate::app_do_modal = false;
 
 QPalette *QGuiApplicationPrivate::app_pal = 0;        // default application palette
@@ -294,6 +296,8 @@ static void init_plugins(const QList<QByteArray> &pluginList)
             plugin = QGenericPluginFactory::create(QLatin1String(pluginSpec.mid(0, colonPos)),
                                                    QLatin1String(pluginSpec.mid(colonPos+1)));
         qDebug() << "  created" << plugin;
+        if (plugin)
+            QGuiApplicationPrivate::generic_plugin_list.append(plugin);
     }
 }
 
@@ -424,6 +428,10 @@ QGuiApplicationPrivate::~QGuiApplicationPrivate()
     is_app_closing = true;
     is_app_running = false;
 
+    for (int i = 0; i < generic_plugin_list.count(); ++i)
+        delete generic_plugin_list.at(i);
+    generic_plugin_list.clear();
+
     QFont::cleanup();
 
 #ifndef QT_NO_CURSOR
index 20489af..bd42fa1 100644 (file)
@@ -175,6 +175,7 @@ public:
 
     static bool quitOnLastWindowClosed;
 
+    static QList<QObject *> generic_plugin_list;
 
 private:
     void init();