diff options
Diffstat (limited to 'src/plugins/printsupport')
-rw-r--r-- | src/plugins/printsupport/cups/qcupsprintersupport.cpp | 23 | ||||
-rw-r--r-- | src/plugins/printsupport/cups/qcupsprintersupport_p.h | 2 |
2 files changed, 19 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); diff --git a/src/plugins/printsupport/cups/qcupsprintersupport_p.h b/src/plugins/printsupport/cups/qcupsprintersupport_p.h index e9fe24203e..d42c0d2630 100644 --- a/src/plugins/printsupport/cups/qcupsprintersupport_p.h +++ b/src/plugins/printsupport/cups/qcupsprintersupport_p.h @@ -68,12 +68,14 @@ public: virtual QPaintEngine *createPaintEngine(QPrintEngine *printEngine, QPrinter::PrinterMode); virtual QList<QPrinter::PaperSize> supportedPaperSizes(const QPrinterInfo &) const; virtual QList<QPair<QString, QSizeF> > supportedSizesWithNames(const QPrinterInfo &) const; + virtual QList<QPrinterInfo> availablePrinters(); virtual QString printerOption(const QPrinterInfo &printer, const QString &key) const; virtual PrinterOptions printerOptions(const QPrinterInfo &printer) const; private: void loadCups(); void loadCupsPrinters(); + void freeCupsPrinters(); QString cupsOption(int i, const QString &key) const; QLibrary m_cups; |