summaryrefslogtreecommitdiff
path: root/Source/WebKit2/WebProcess/WebPage/gtk/PrinterListGtk.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Source/WebKit2/WebProcess/WebPage/gtk/PrinterListGtk.cpp')
-rw-r--r--Source/WebKit2/WebProcess/WebPage/gtk/PrinterListGtk.cpp23
1 files changed, 11 insertions, 12 deletions
diff --git a/Source/WebKit2/WebProcess/WebPage/gtk/PrinterListGtk.cpp b/Source/WebKit2/WebProcess/WebPage/gtk/PrinterListGtk.cpp
index 2d54bcc6c..8ddc912f6 100644
--- a/Source/WebKit2/WebProcess/WebPage/gtk/PrinterListGtk.cpp
+++ b/Source/WebKit2/WebProcess/WebPage/gtk/PrinterListGtk.cpp
@@ -26,7 +26,7 @@
#include "config.h"
#include "PrinterListGtk.h"
-#ifdef HAVE_GTK_UNIX_PRINTING
+#if HAVE(GTK_UNIX_PRINTING)
#include <gtk/gtkunixprint.h>
@@ -34,27 +34,26 @@ namespace WebKit {
PrinterListGtk* PrinterListGtk::s_sharedPrinterList = nullptr;
-RefPtr<PrinterListGtk> PrinterListGtk::shared()
+RefPtr<PrinterListGtk> PrinterListGtk::getOrCreate()
{
if (s_sharedPrinterList)
- return s_sharedPrinterList;
+ return s_sharedPrinterList->isEnumeratingPrinters() ? nullptr : s_sharedPrinterList;
return adoptRef(new PrinterListGtk);
}
-gboolean PrinterListGtk::enumeratePrintersFunction(GtkPrinter* printer)
-{
- ASSERT(s_sharedPrinterList);
- s_sharedPrinterList->addPrinter(printer);
- return FALSE;
-}
-
PrinterListGtk::PrinterListGtk()
: m_defaultPrinter(nullptr)
+ , m_enumeratingPrinters(true)
{
ASSERT(!s_sharedPrinterList);
s_sharedPrinterList = this;
- gtk_enumerate_printers(reinterpret_cast<GtkPrinterFunc>(&enumeratePrintersFunction), nullptr, nullptr, TRUE);
+ gtk_enumerate_printers([](GtkPrinter* printer, gpointer) -> gboolean {
+ ASSERT(s_sharedPrinterList);
+ s_sharedPrinterList->addPrinter(printer);
+ return FALSE;
+ }, nullptr, nullptr, TRUE);
+ m_enumeratingPrinters = false;
}
PrinterListGtk::~PrinterListGtk()
@@ -81,4 +80,4 @@ GtkPrinter* PrinterListGtk::findPrinter(const char* printerName) const
} // namespace WebKit
-#endif // HAVE_GTK_UNIX_PRINTING
+#endif // HAVE(GTK_UNIX_PRINTING)