diff options
author | Friedemann Kleint <Friedemann.Kleint@digia.com> | 2013-10-16 15:32:48 +0200 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-10-17 15:58:32 +0200 |
commit | 39eb7e0b898da9302afa23087913af45844135b5 (patch) | |
tree | ddc98032a20b54859ff63cc3fd7bb1c32d4bf9ac /src/plugins/printsupport/cups/qcupsprintersupport.cpp | |
parent | e7cf7c1c65ff2379621603742f2b9ae344e40f69 (diff) |
Refresh CUPS printer list when QPrinterInfo.availablePrinters() is called.
Introduce freeCupsPrinters() thus fixing a bug in the old deallocation
code which would first set m_cupsPrintersCount = 0 and then
pass it to cupsFreeDests().
Task-number: QTBUG-33666
Change-Id: I94c51cb390761a669a9cbd589c1131cfb51354c3
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Diffstat (limited to 'src/plugins/printsupport/cups/qcupsprintersupport.cpp')
-rw-r--r-- | src/plugins/printsupport/cups/qcupsprintersupport.cpp | 23 |
1 files changed, 17 insertions, 6 deletions
diff --git a/src/plugins/printsupport/cups/qcupsprintersupport.cpp b/src/plugins/printsupport/cups/qcupsprintersupport.cpp index f41d4f5047..b9f0c394f8 100644 --- a/src/plugins/printsupport/cups/qcupsprintersupport.cpp +++ b/src/plugins/printsupport/cups/qcupsprintersupport.cpp @@ -66,8 +66,7 @@ QCupsPrinterSupport::QCupsPrinterSupport() : QPlatformPrinterSupport(), QCupsPrinterSupport::~QCupsPrinterSupport() { - if (cupsFreeDests) - cupsFreeDests(m_cupsPrintersCount, m_cupsPrinters); + freeCupsPrinters(); } QPrintEngine *QCupsPrinterSupport::createNativePrintEngine(QPrinter::PrinterMode printerMode) @@ -98,14 +97,20 @@ void QCupsPrinterSupport::loadCups() cupsGetOption = (CupsGetOption) m_cups.resolve("cupsGetOption"); } +void QCupsPrinterSupport::freeCupsPrinters() +{ + if (cupsFreeDests && m_cupsPrintersCount) { + cupsFreeDests(m_cupsPrintersCount, m_cupsPrinters); + m_cupsPrintersCount = 0; + m_cupsPrinters = 0; + } +} + void QCupsPrinterSupport::loadCupsPrinters() { - m_cupsPrintersCount = 0; + freeCupsPrinters(); m_printers.clear(); - if (cupsFreeDests) - cupsFreeDests(m_cupsPrintersCount, m_cupsPrinters); - if (cupsGetDests) m_cupsPrintersCount = cupsGetDests(&m_cupsPrinters); @@ -122,6 +127,12 @@ void QCupsPrinterSupport::loadCupsPrinters() } } +QList<QPrinterInfo> QCupsPrinterSupport::availablePrinters() +{ + loadCupsPrinters(); + return QPlatformPrinterSupport::availablePrinters(); +} + QString QCupsPrinterSupport::printerOption(const QPrinterInfo &printer, const QString &key) const { return cupsOption(printerIndex(printer), key); |