From 3c2aea92cf7794c05895141dfb2db8e206ce36b5 Mon Sep 17 00:00:00 2001 From: Laszlo Agocs Date: Tue, 18 Oct 2011 09:07:46 +0300 Subject: [PATCH] Destroy generic plugins on exit. Change-Id: I9037cabae74f9a7d8743630d0f530aaa1593266f Reviewed-by: Paul Olav Tvete --- src/gui/kernel/qguiapplication.cpp | 8 ++++++++ src/gui/kernel/qguiapplication_p.h | 1 + 2 files changed, 9 insertions(+) diff --git a/src/gui/kernel/qguiapplication.cpp b/src/gui/kernel/qguiapplication.cpp index a16685e..ee32924 100644 --- a/src/gui/kernel/qguiapplication.cpp +++ b/src/gui/kernel/qguiapplication.cpp @@ -90,6 +90,8 @@ QPointF QGuiApplicationPrivate::lastCursorPosition(0.0, 0.0); QPlatformIntegration *QGuiApplicationPrivate::platform_integration = 0; +QList 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 &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 diff --git a/src/gui/kernel/qguiapplication_p.h b/src/gui/kernel/qguiapplication_p.h index 20489af..bd42fa1 100644 --- a/src/gui/kernel/qguiapplication_p.h +++ b/src/gui/kernel/qguiapplication_p.h @@ -175,6 +175,7 @@ public: static bool quitOnLastWindowClosed; + static QList generic_plugin_list; private: void init(); -- 2.7.4