diff options
Diffstat (limited to 'Source/WebKit2/WebProcess/WebPage/gtk/WebPrintOperationGtk.cpp')
-rw-r--r-- | Source/WebKit2/WebProcess/WebPage/gtk/WebPrintOperationGtk.cpp | 30 |
1 files changed, 17 insertions, 13 deletions
diff --git a/Source/WebKit2/WebProcess/WebPage/gtk/WebPrintOperationGtk.cpp b/Source/WebKit2/WebProcess/WebPage/gtk/WebPrintOperationGtk.cpp index e79cc75c2..fdd419394 100644 --- a/Source/WebKit2/WebProcess/WebPage/gtk/WebPrintOperationGtk.cpp +++ b/Source/WebKit2/WebProcess/WebPage/gtk/WebPrintOperationGtk.cpp @@ -40,10 +40,11 @@ #include <WebCore/ResourceError.h> #include <WebCore/URL.h> #include <gtk/gtk.h> +#include <memory> #include <wtf/Vector.h> -#include <wtf/gobject/GUniquePtr.h> +#include <wtf/glib/GUniquePtr.h> -#ifdef HAVE_GTK_UNIX_PRINTING +#if HAVE(GTK_UNIX_PRINTING) #include "PrinterListGtk.h" #include <cairo-pdf.h> #include <cairo-ps.h> @@ -52,7 +53,7 @@ namespace WebKit { -#ifdef HAVE_GTK_UNIX_PRINTING +#if HAVE(GTK_UNIX_PRINTING) class WebPrintOperationGtkUnix final: public WebPrintOperationGtk { public: WebPrintOperationGtkUnix(WebPage* page, const PrintInfo& printInfo) @@ -66,7 +67,8 @@ public: m_printContext = printContext; m_callbackID = callbackID; - RefPtr<PrinterListGtk> printerList = PrinterListGtk::shared(); + RefPtr<PrinterListGtk> printerList = PrinterListGtk::getOrCreate(); + ASSERT(printerList); const char* printerName = gtk_print_settings_get_printer(m_printSettings.get()); GtkPrinter* printer = printerName ? printerList->findPrinter(printerName) : printerList->defaultPrinter(); if (!printer) { @@ -104,7 +106,7 @@ public: print(surface, 72, 72); } - void startPage(cairo_t* cr) override + void startPage(cairo_t*) override { if (!currentPageIsFirstPageOfSheet()) return; @@ -139,7 +141,7 @@ public: cairo_show_page(cr); } - static void printJobComplete(GtkPrintJob* printJob, WebPrintOperationGtkUnix* printOperation, const GError* error) + static void printJobComplete(GtkPrintJob*, WebPrintOperationGtkUnix* printOperation, const GError* error) { printOperation->printDone(error ? printError(printOperation->frameURL(), error->message) : WebCore::ResourceError()); printOperation->m_printJob = 0; @@ -148,13 +150,13 @@ public: static void printJobFinished(WebPrintOperationGtkUnix* printOperation) { printOperation->deref(); - WebProcess::shared().enableTermination(); + WebProcess::singleton().enableTermination(); } void endPrint() override { // Disable web process termination until the print job finishes. - WebProcess::shared().disableTermination(); + WebProcess::singleton().disableTermination(); cairo_surface_finish(gtk_print_job_get_surface(m_printJob.get(), 0)); // Make sure the operation is alive until the job is sent. @@ -208,6 +210,7 @@ struct PrintPagesData { , firstSheetNumber(0) , numberOfSheets(0) , firstPagePosition(0) + , lastPagePosition(0) , collated(0) , uncollated(0) , isDone(false) @@ -360,7 +363,6 @@ struct PrintPagesData { GRefPtr<GMainLoop> mainLoop; int totalPrinted; - size_t totalToPrint; int pageNumber; Vector<size_t> pages; size_t sheetNumber; @@ -379,11 +381,13 @@ struct PrintPagesData { PassRefPtr<WebPrintOperationGtk> WebPrintOperationGtk::create(WebPage* page, const PrintInfo& printInfo) { -#ifdef HAVE_GTK_UNIX_PRINTING +#if HAVE(GTK_UNIX_PRINTING) return adoptRef(new WebPrintOperationGtkUnix(page, printInfo)); #elif defined(G_OS_WIN32) return adoptRef(new WebPrintOperationGtkWin32(page, printInfo)); #else + UNUSED_PARAM(page); + UNUSED_PARAM(printInfo); return 0; #endif } @@ -695,7 +699,7 @@ void WebPrintOperationGtk::printPagesDone() { m_printPagesIdleId = 0; endPrint(); - m_cairoContext = 0; + m_cairoContext = nullptr; } void WebPrintOperationGtk::printDone(const WebCore::ResourceError& error) @@ -713,7 +717,7 @@ void WebPrintOperationGtk::print(cairo_surface_t* surface, double xDPI, double y { ASSERT(m_printContext); - OwnPtr<PrintPagesData> data = adoptPtr(new PrintPagesData(this)); + auto data = std::make_unique<PrintPagesData>(this); if (!data->isValid) { cairo_surface_finish(surface); printDone(invalidPageRangeToPrint(frameURL())); @@ -729,7 +733,7 @@ void WebPrintOperationGtk::print(cairo_surface_t* surface, double xDPI, double y // operation has finished. See https://bugs.webkit.org/show_bug.cgi?id=122801. unsigned idlePriority = m_printMode == PrintInfo::PrintModeSync ? G_PRIORITY_DEFAULT - 10 : G_PRIORITY_DEFAULT_IDLE + 10; GMainLoop* mainLoop = data->mainLoop.get(); - m_printPagesIdleId = gdk_threads_add_idle_full(idlePriority, printPagesIdle, data.leakPtr(), printPagesIdleDone); + m_printPagesIdleId = gdk_threads_add_idle_full(idlePriority, printPagesIdle, data.release(), printPagesIdleDone); if (m_printMode == PrintInfo::PrintModeSync) { ASSERT(mainLoop); g_main_loop_run(mainLoop); |