diff options
author | Friedemann Kleint <Friedemann.Kleint@digia.com> | 2013-10-30 15:18:25 +0100 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-10-31 05:53:38 +0100 |
commit | e00a961732ad028a1ead1eae1d8aecf1492d3008 (patch) | |
tree | 9f6e4a0844eed6f0223d1018a165f9c420dddf3c /src | |
parent | fe220f3b5b6dcc5b98ce35684e9408c0fc669ddd (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.cpp | 20 |
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 |