Date: Saturday, January 28, 2012 @ 11:21:35 Author: heftig Revision: 147943
Revert a commit that makes Firefox crash when printing Added: gtk2/trunk/cups-custom-print.patch Modified: gtk2/trunk/PKGBUILD -------------------------+ PKGBUILD | 12 +++-- cups-custom-print.patch | 104 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 112 insertions(+), 4 deletions(-) Modified: PKGBUILD =================================================================== --- PKGBUILD 2012-01-28 13:31:34 UTC (rev 147942) +++ PKGBUILD 2012-01-28 16:21:35 UTC (rev 147943) @@ -4,7 +4,7 @@ pkgbase=gtk2 pkgname=('gtk2' 'gtk-update-icon-cache') pkgver=2.24.9 -pkgrel=1 +pkgrel=2 arch=('i686' 'x86_64') url="http://www.gtk.org/" makedepends=('atk' 'pango' 'libxcursor' 'libxinerama' 'libxrandr' 'libxi' 'libxcomposite' 'libxdamage' @@ -12,20 +12,24 @@ options=('!libtool' '!docs') license=('LGPL') source=(http://ftp.gnome.org/pub/gnome/sources/gtk+/2.24/gtk+-$pkgver.tar.xz - xid-collision-debug.patch) + xid-collision-debug.patch cups-custom-print.patch) sha256sums=('84204bf24cac739fd979943127e7b29cb46b1017684aa24dce630faa01bcb61d' - 'd758bb93e59df15a4ea7732cf984d1c3c19dff67c94b957575efea132b8fe558') + 'd758bb93e59df15a4ea7732cf984d1c3c19dff67c94b957575efea132b8fe558' + '9535c9df19338cbea98ec4b2b5c8e4cef718455938f05c9cf8a08a3805d6b85d') build() { cd "$srcdir/gtk+-$pkgver" patch -Np1 -i "$srcdir/xid-collision-debug.patch" + # https://bugzilla.gnome.org/show_bug.cgi?id=543520 + patch -Rp1 -i "$srcdir/cups-custom-print.patch" + CXX=/bin/false ./configure --prefix=/usr \ --sysconfdir=/etc \ --localstatedir=/var \ --with-xinput=yes - #https://bugzilla.gnome.org/show_bug.cgi?id=655517 + # https://bugzilla.gnome.org/show_bug.cgi?id=655517 sed -i -e 's/ -shared / -Wl,-O1,--as-needed\0/g' libtool make Added: cups-custom-print.patch =================================================================== --- cups-custom-print.patch (rev 0) +++ cups-custom-print.patch 2012-01-28 16:21:35 UTC (rev 147943) @@ -0,0 +1,104 @@ +From 8170436e61ea68c713d75ad374d22c3261be9203 Mon Sep 17 00:00:00 2001 +From: Benjamin Berg <benja...@sipsolutions.net> +Date: Sat, 24 Dec 2011 16:26:32 +0000 +Subject: Set cups Custom print options correctly (bug #543520, patch by Marek Kašík) + +This patch fixes the cups print backend to pass Custom options with +the "Custom." prefix to cups if neccessary. +--- +diff --git a/modules/printbackends/cups/gtkprintbackendcups.c b/modules/printbackends/cups/gtkprintbackendcups.c +index 14a1b5d..2751ee4 100644 +--- a/modules/printbackends/cups/gtkprintbackendcups.c ++++ b/modules/printbackends/cups/gtkprintbackendcups.c +@@ -483,22 +483,44 @@ cups_print_cb (GtkPrintBackendCups *print_backend, + GDK_THREADS_LEAVE (); + } + ++typedef struct { ++ GtkCupsRequest *request; ++ GtkPrinterOptionSet *options; ++} CupsOptionsData; ++ + static void + add_cups_options (const gchar *key, + const gchar *value, + gpointer user_data) + { +- GtkCupsRequest *request = user_data; ++ CupsOptionsData *data = (CupsOptionsData *) user_data; ++ GtkCupsRequest *request = data->request; ++ GtkPrinterOptionSet *options = data->options; ++ GtkPrinterOption *option = NULL; ++ gchar *new_value = NULL; + + if (!g_str_has_prefix (key, "cups-")) + return; + + if (strcmp (value, "gtk-ignore-value") == 0) + return; ++ ++ option = gtk_printer_option_set_lookup (options, key); + + key = key + strlen ("cups-"); + +- gtk_cups_request_encode_option (request, key, value); ++ /* Add "Custom." prefix to custom values */ ++ if (value && option && ++ !gtk_printer_option_has_choice (option, value)) ++ new_value = g_strdup_printf ("Custom.%s", value); ++ ++ if (new_value) ++ { ++ gtk_cups_request_encode_option (request, key, new_value); ++ g_free (new_value); ++ } ++ else ++ gtk_cups_request_encode_option (request, key, value); + } + + static void +@@ -511,8 +533,12 @@ gtk_print_backend_cups_print_stream (GtkPrintBackend *print_backend, + { + GtkPrinterCups *cups_printer; + CupsPrintStreamData *ps; ++ CupsOptionsData *options_data; + GtkCupsRequest *request; + GtkPrintSettings *settings; ++ GtkPrinterOptionSet *options; ++ GtkPrintCapabilities capabilities; ++ GtkPageSetup *page_setup; + const gchar *title; + char printer_absolute_uri[HTTP_MAX_URI]; + +@@ -521,6 +547,8 @@ gtk_print_backend_cups_print_stream (GtkPrintBackend *print_backend, + + cups_printer = GTK_PRINTER_CUPS (gtk_print_job_get_printer (job)); + settings = gtk_print_job_get_settings (job); ++ capabilities = cups_printer_get_capabilities (GTK_PRINTER (cups_printer)); ++ page_setup = gtk_printer_get_default_page_size (GTK_PRINTER (cups_printer)); + + request = gtk_cups_request_new_with_username (NULL, + GTK_CUPS_POST, +@@ -558,8 +586,18 @@ gtk_print_backend_cups_print_stream (GtkPrintBackend *print_backend, + IPP_TAG_NAME, "job-name", + NULL, title); + +- gtk_print_settings_foreach (settings, add_cups_options, request); +- ++ options = cups_printer_get_options (GTK_PRINTER (cups_printer), settings, page_setup, capabilities); ++ ++ options_data = g_new0 (CupsOptionsData, 1); ++ options_data->request = request; ++ options_data->options = options; ++ ++ gtk_print_settings_foreach (settings, add_cups_options, options_data); ++ ++ g_object_unref (page_setup); ++ g_object_unref (options); ++ g_free (options_data); ++ + ps = g_new0 (CupsPrintStreamData, 1); + ps->callback = callback; + ps->user_data = user_data; +-- +cgit v0.9.0.2