summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@digia.com>2013-10-30 15:18:25 +0100
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-10-31 05:53:38 +0100
commite00a961732ad028a1ead1eae1d8aecf1492d3008 (patch)
tree9f6e4a0844eed6f0223d1018a165f9c420dddf3c /src
parentfe220f3b5b6dcc5b98ce35684e9408c0fc669ddd (diff)
Clean up QPlatformPrinterSupport via post routine.
Change-Id: I5aff587f0186f15c9fa65d236e5ebe9a7901dd86 Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Diffstat (limited to 'src')
-rw-r--r--src/printsupport/kernel/qplatformprintplugin.cpp20
1 files changed, 16 insertions, 4 deletions
diff --git a/src/printsupport/kernel/qplatformprintplugin.cpp b/src/printsupport/kernel/qplatformprintplugin.cpp
index ce6d7a0f7e..e38b481a0e 100644
--- a/src/printsupport/kernel/qplatformprintplugin.cpp
+++ b/src/printsupport/kernel/qplatformprintplugin.cpp
@@ -40,7 +40,10 @@
****************************************************************************/
#include "qplatformprintplugin.h"
+#include "qplatformprintersupport.h"
+#include "qprinterinfo.h"
#include "private/qfactoryloader_p.h"
+#include <qcoreapplication.h>
QT_BEGIN_NAMESPACE
@@ -58,6 +61,14 @@ QPlatformPrinterSupportPlugin::~QPlatformPrinterSupportPlugin()
{
}
+static QPlatformPrinterSupport *printerSupport = 0;
+
+static void cleanupPrinterSupport()
+{
+ delete printerSupport;
+ printerSupport = 0;
+}
+
/*!
\internal
@@ -68,13 +79,14 @@ QPlatformPrinterSupportPlugin::~QPlatformPrinterSupportPlugin()
*/
QPlatformPrinterSupport *QPlatformPrinterSupportPlugin::get()
{
- static QPlatformPrinterSupport *singleton = 0;
- if (!singleton) {
+ if (!printerSupport) {
const QMultiMap<int, QString> keyMap = loader()->keyMap();
if (!keyMap.isEmpty())
- singleton = qLoadPlugin<QPlatformPrinterSupport, QPlatformPrinterSupportPlugin>(loader(), keyMap.constBegin().value());
+ printerSupport = qLoadPlugin<QPlatformPrinterSupport, QPlatformPrinterSupportPlugin>(loader(), keyMap.constBegin().value());
+ if (printerSupport)
+ qAddPostRoutine(cleanupPrinterSupport);
}
- return singleton;
+ return printerSupport;
}
QT_END_NAMESPACE