summaryrefslogtreecommitdiffstats
path: root/src/plugins/printsupport
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/printsupport')
-rw-r--r--src/plugins/printsupport/cups/qcupsprintersupport.cpp23
-rw-r--r--src/plugins/printsupport/cups/qcupsprintersupport_p.h2
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;