diff options
Diffstat (limited to 'Source/WebKit2/WebProcess/WebPage/gtk/PrinterListGtk.cpp')
-rw-r--r-- | Source/WebKit2/WebProcess/WebPage/gtk/PrinterListGtk.cpp | 23 |
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) |