diff options
author | Frederik Gladhorn <frederik.gladhorn@digia.com> | 2014-07-01 10:03:53 +0200 |
---|---|---|
committer | Frederik Gladhorn <frederik.gladhorn@digia.com> | 2014-07-01 16:25:19 +0200 |
commit | a09a8d509a69ed16d8afbe15296b8332cacd6c66 (patch) | |
tree | 28645b437fd0390d903f753a44ba79626eecb8ac /src/printsupport | |
parent | 4b28152da64f7f23a1bbb810d8cdb7626a5f0b8e (diff) | |
parent | 83f06da1c6bffff61af78cbe75a0691d53742b53 (diff) |
Merge remote-tracking branch 'origin/5.3' into dev
Conflicts:
mkspecs/qnx-x86-qcc/qplatformdefs.h
src/corelib/global/qglobal.h
src/network/socket/qnativesocketengine_winrt.cpp
src/plugins/platforms/android/androidjniaccessibility.cpp
src/plugins/platforms/windows/qwindowswindow.cpp
Manually adjusted:
mkspecs/qnx-armle-v7-qcc/qplatformdefs.h
to include 9ce697f2d54be6d94381c72af28dda79cbc027d4
Thanks goes to Sergio for the qnx mkspecs adjustments.
Change-Id: I53b1fd6bc5bc884e5ee2c2b84975f58171a1cb8e
Diffstat (limited to 'src/printsupport')
-rw-r--r-- | src/printsupport/kernel/qprintengine_win.cpp | 28 | ||||
-rw-r--r-- | src/printsupport/kernel/qprintengine_win_p.h | 1 | ||||
-rw-r--r-- | src/printsupport/kernel/qprinter.cpp | 6 |
3 files changed, 17 insertions, 18 deletions
diff --git a/src/printsupport/kernel/qprintengine_win.cpp b/src/printsupport/kernel/qprintengine_win.cpp index 1adfcfa630..bf39b9309d 100644 --- a/src/printsupport/kernel/qprintengine_win.cpp +++ b/src/printsupport/kernel/qprintengine_win.cpp @@ -850,14 +850,13 @@ void QWin32PrintEngine::drawPolygon(const QPointF *points, int pointCount, Polyg QWin32PrintEnginePrivate::~QWin32PrintEnginePrivate() { - if (hdc) - release(); + release(); } void QWin32PrintEnginePrivate::initialize() { - if (hdc) - release(); + release(); + Q_ASSERT(!hPrinter); Q_ASSERT(!hdc); Q_ASSERT(!devMode); @@ -884,18 +883,19 @@ void QWin32PrintEnginePrivate::initialize() if (!ok) { qErrnoWarning("QWin32PrintEngine::initialize: GetPrinter failed"); - GlobalUnlock(pInfo); - GlobalFree(hMem); - ClosePrinter(hPrinter); - pInfo = 0; - hMem = 0; - hPrinter = 0; + release(); return; } devMode = pInfo->pDevMode; hdc = CreateDC(NULL, reinterpret_cast<const wchar_t *>(m_printDevice.id().utf16()), 0, devMode); + if (!hdc) { + qErrnoWarning("QWin32PrintEngine::initialize: CreateDC failed"); + release(); + return; + } + Q_ASSERT(hPrinter); Q_ASSERT(pInfo); @@ -947,19 +947,17 @@ void QWin32PrintEnginePrivate::initHDC() void QWin32PrintEnginePrivate::release() { - if (hdc == 0) - return; - if (globalDevMode) { // Devmode comes from print dialog GlobalUnlock(globalDevMode); - } else { // Devmode comes from initialize... + } else if (hMem) { // Devmode comes from initialize... // devMode is a part of the same memory block as pInfo so one free is enough... GlobalUnlock(hMem); GlobalFree(hMem); } if (hPrinter) ClosePrinter(hPrinter); - DeleteDC(hdc); + if (hdc) + DeleteDC(hdc); hdc = 0; hPrinter = 0; diff --git a/src/printsupport/kernel/qprintengine_win_p.h b/src/printsupport/kernel/qprintengine_win_p.h index 9b944d5921..f698992425 100644 --- a/src/printsupport/kernel/qprintengine_win_p.h +++ b/src/printsupport/kernel/qprintengine_win_p.h @@ -125,6 +125,7 @@ public: globalDevMode(0), devMode(0), pInfo(0), + hMem(0), hdc(0), mode(QPrinter::ScreenResolution), state(QPrinter::Idle), diff --git a/src/printsupport/kernel/qprinter.cpp b/src/printsupport/kernel/qprinter.cpp index bdc9a98f2e..c758d9f4ea 100644 --- a/src/printsupport/kernel/qprinter.cpp +++ b/src/printsupport/kernel/qprinter.cpp @@ -120,9 +120,9 @@ QPrinterInfo QPrinterPrivate::findValidPrinter(const QPrinterInfo &printer) if (printerToUse.isNull()) { printerToUse = QPrinterInfo::defaultPrinter(); if (printerToUse.isNull()) { - QList<QPrinterInfo> availablePrinters = QPrinterInfo::availablePrinters(); - if (!availablePrinters.isEmpty()) - printerToUse = availablePrinters.at(0); + QStringList availablePrinterNames = QPrinterInfo::availablePrinterNames(); + if (!availablePrinterNames.isEmpty()) + printerToUse = QPrinterInfo::printerInfo(availablePrinterNames.at(0)); } } return printerToUse; |