summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/printsupport/kernel/qplatformprintplugin.cpp14
1 files changed, 12 insertions, 2 deletions
diff --git a/src/printsupport/kernel/qplatformprintplugin.cpp b/src/printsupport/kernel/qplatformprintplugin.cpp
index 9bc4b61829..a80f369040 100644
--- a/src/printsupport/kernel/qplatformprintplugin.cpp
+++ b/src/printsupport/kernel/qplatformprintplugin.cpp
@@ -42,6 +42,7 @@
#include "qprinterinfo.h"
#include "private/qfactoryloader_p.h"
#include <qcoreapplication.h>
+#include <qdebug.h>
#ifndef QT_NO_PRINTER
@@ -79,8 +80,17 @@ QPlatformPrinterSupport *QPlatformPrinterSupportPlugin::get()
{
if (!printerSupport) {
const QMultiMap<int, QString> keyMap = loader()->keyMap();
- if (!keyMap.isEmpty())
- printerSupport = qLoadPlugin<QPlatformPrinterSupport, QPlatformPrinterSupportPlugin>(loader(), keyMap.constBegin().value());
+ QMultiMap<int, QString>::const_iterator it = keyMap.cbegin();
+ if (!qEnvironmentVariableIsEmpty("QT_PRINTER_MODULE")) {
+ QString module = QString::fromLocal8Bit(qgetenv("QT_PRINTER_MODULE"));
+ QMultiMap<int, QString>::const_iterator it2 = std::find_if(keyMap.cbegin(), keyMap.cend(), [module](const QString &value){ return value == module; });
+ if (it2 == keyMap.cend())
+ qWarning() << "Unable to load printer plugin" << module;
+ else
+ it = it2;
+ }
+ if (it != keyMap.cend())
+ printerSupport = qLoadPlugin<QPlatformPrinterSupport, QPlatformPrinterSupportPlugin>(loader(), it.value());
if (printerSupport)
qAddPostRoutine(cleanupPrinterSupport);
}