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