[gtk+/gtk-3-14] printing: Always get details of Avahi printers over IPP
- From: Marek Kašík <mkasik src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+/gtk-3-14] printing: Always get details of Avahi printers over IPP
- Date: Wed, 25 Feb 2015 17:13:03 +0000 (UTC)
commit 1f04ff7f4aa3a1412360712a9c56f6ba358acc54
Author: Marek Kasik <mkasik redhat com>
Date: Wed Feb 25 18:09:02 2015 +0100
printing: Always get details of Avahi printers over IPP
Request details of Avahi browsed printers even when
we've got their PPDs already. Some options are not
present in PPD.
https://bugzilla.gnome.org/show_bug.cgi?id=743323
modules/printbackends/cups/gtkprintbackendcups.c | 52 +++++++++++----------
1 files changed, 27 insertions(+), 25 deletions(-)
---
diff --git a/modules/printbackends/cups/gtkprintbackendcups.c
b/modules/printbackends/cups/gtkprintbackendcups.c
index c1b0414..b3d6033 100644
--- a/modules/printbackends/cups/gtkprintbackendcups.c
+++ b/modules/printbackends/cups/gtkprintbackendcups.c
@@ -2540,15 +2540,10 @@ cups_request_avahi_printer_info_cb (GtkPrintBackendCups *cups_backend,
set_info_state_message (info);
printer = gtk_print_backend_find_printer (backend, info->printer_name);
- if (printer != NULL &&
- GTK_PRINTER_CUPS (printer)->avahi_browsed)
- {
- g_object_ref (printer);
- }
+ if (printer != NULL)
+ g_object_ref (printer);
else
- {
- goto done;
- }
+ goto done;
if (info->got_printer_type &&
info->default_printer &&
@@ -3567,20 +3562,12 @@ cups_request_ppd_cb (GtkPrintBackendCups *print_backend,
if (gtk_cups_result_is_error (result))
{
- gboolean success = FALSE;
-
#ifdef HAVE_CUPS_API_1_6
- /* Standalone Avahi printers don't have PPD files. */
- if (GTK_PRINTER_CUPS (printer)->avahi_browsed)
- {
- cups_request_avahi_printer_info (GTK_PRINTER_CUPS (printer)->printer_uri,
- GTK_PRINTER_CUPS (printer)->hostname,
- GTK_PRINTER_CUPS (printer)->port,
- GTK_PRINT_BACKEND_CUPS (gtk_printer_get_backend (printer)));
- }
- else
+ if (!GTK_PRINTER_CUPS (printer)->avahi_browsed)
#endif
{
+ gboolean success = FALSE;
+
/* If we get a 404 then it is just a raw printer without a ppd
and not an error. */
if ((gtk_cups_result_get_error_type (result) == GTK_CUPS_ERROR_HTTP) &&
@@ -3591,16 +3578,31 @@ cups_request_ppd_cb (GtkPrintBackendCups *print_backend,
}
g_signal_emit_by_name (printer, "details-acquired", success);
+
+ goto done;
}
+ }
+ else
+ {
+ /* let ppdOpenFd take over the ownership of the open file */
+ g_io_channel_seek_position (data->ppd_io, 0, G_SEEK_SET, NULL);
+ data->printer->ppd_file = ppdOpenFd (dup (g_io_channel_unix_get_fd (data->ppd_io)));
+ ppdLocalize (data->printer->ppd_file);
+ ppdMarkDefaults (data->printer->ppd_file);
+ }
+
+#ifdef HAVE_CUPS_API_1_6
+ /* Get additional details of Avahi browsed printer via an IPP request */
+ if (GTK_PRINTER_CUPS (printer)->avahi_browsed)
+ {
+ cups_request_avahi_printer_info (GTK_PRINTER_CUPS (printer)->printer_uri,
+ GTK_PRINTER_CUPS (printer)->hostname,
+ GTK_PRINTER_CUPS (printer)->port,
+ GTK_PRINT_BACKEND_CUPS (gtk_printer_get_backend (printer)));
goto done;
}
-
- /* let ppdOpenFd take over the ownership of the open file */
- g_io_channel_seek_position (data->ppd_io, 0, G_SEEK_SET, NULL);
- data->printer->ppd_file = ppdOpenFd (dup (g_io_channel_unix_get_fd (data->ppd_io)));
- ppdLocalize (data->printer->ppd_file);
- ppdMarkDefaults (data->printer->ppd_file);
+#endif
gtk_printer_set_has_details (printer, TRUE);
g_signal_emit_by_name (printer, "details-acquired", TRUE);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]