]> git.pld-linux.org Git - packages/cups.git/blob - cups-eggcups.patch
- up to 2.2.1; FC patches refresh
[packages/cups.git] / cups-eggcups.patch
1 diff -up cups-2.1b1/backend/ipp.c.eggcups cups-2.1b1/backend/ipp.c
2 --- cups-2.1b1/backend/ipp.c.eggcups    2015-05-28 03:19:14.000000000 +0200
3 +++ cups-2.1b1/backend/ipp.c    2015-06-29 12:56:54.872807227 +0200
4 @@ -149,6 +149,70 @@ static char                tmpfilename[1024] = "";
5  static char            mandatory_attrs[1024] = "";
6                                         /* cupsMandatory value */
7  
8 +#if HAVE_DBUS
9 +#include <dbus/dbus.h>
10 +
11 +static DBusConnection *dbus_connection = NULL;
12 +
13 +static int
14 +init_dbus (void)
15 +{
16 +  DBusConnection *connection;
17 +  DBusError error;
18 +
19 +  if (dbus_connection &&
20 +      !dbus_connection_get_is_connected (dbus_connection)) {
21 +    dbus_connection_unref (dbus_connection);
22 +    dbus_connection = NULL;
23 +  }
24 +
25 +  dbus_error_init (&error);
26 +  connection = dbus_bus_get (getuid () ? DBUS_BUS_SESSION : DBUS_BUS_SYSTEM, &error);
27 +  if (connection == NULL) {
28 +    dbus_error_free (&error);
29 +    return -1;
30 +  }
31 +
32 +  dbus_connection = connection;
33 +  return 0;
34 +}
35 +
36 +int
37 +dbus_broadcast_queued_remote (const char *printer_uri,
38 +                             ipp_status_t status,
39 +                             unsigned int local_job_id,
40 +                             unsigned int remote_job_id,
41 +                             const char *username,
42 +                             const char *printer_name)
43 +{
44 +  DBusMessage *message;
45 +  DBusMessageIter iter;
46 +  const char *errstr;
47 +
48 +  if (!dbus_connection || !dbus_connection_get_is_connected (dbus_connection)) {
49 +    if (init_dbus () || !dbus_connection)
50 +      return -1;
51 +  }
52 +
53 +  errstr = ippErrorString (status);
54 +  message = dbus_message_new_signal ("/com/redhat/PrinterSpooler",
55 +                                    "com.redhat.PrinterSpooler",
56 +                                    "JobQueuedRemote");
57 +  dbus_message_iter_init_append (message, &iter);
58 +  dbus_message_iter_append_basic (&iter, DBUS_TYPE_STRING, &printer_uri);
59 +  dbus_message_iter_append_basic (&iter, DBUS_TYPE_STRING, &errstr);
60 +  dbus_message_iter_append_basic (&iter, DBUS_TYPE_UINT32, &local_job_id);
61 +  dbus_message_iter_append_basic (&iter, DBUS_TYPE_UINT32, &remote_job_id);
62 +  dbus_message_iter_append_basic (&iter, DBUS_TYPE_STRING, &username);
63 +  dbus_message_iter_append_basic (&iter, DBUS_TYPE_STRING, &printer_name);
64 +
65 +  dbus_connection_send (dbus_connection, message, NULL);
66 +  dbus_connection_flush (dbus_connection);
67 +  dbus_message_unref (message);
68 +
69 +  return 0;
70 +}
71 +#endif /* HAVE_DBUS */
72  
73  /*
74   * Local functions...
75 @@ -1700,6 +1764,15 @@ main(int  argc,                          /* I - Number of comm
76        fprintf(stderr, "DEBUG: Print job accepted - job ID %d.\n", job_id);
77      }
78  
79 +#if HAVE_DBUS
80 +    dbus_broadcast_queued_remote (argv[0],
81 +                                 ipp_status,
82 +                                 atoi (argv[1]),
83 +                                 job_id,
84 +                                 argv[2],
85 +                                 getenv ("PRINTER"));
86 +#endif /* HAVE_DBUS */
87 +
88      ippDelete(response);
89  
90      if (job_canceled)
91 diff -up cups-2.1b1/backend/Makefile.eggcups cups-2.1b1/backend/Makefile
92 --- cups-2.1b1/backend/Makefile.eggcups 2014-05-09 00:42:44.000000000 +0200
93 +++ cups-2.1b1/backend/Makefile 2015-06-29 12:54:55.753026774 +0200
94 @@ -264,7 +264,7 @@ dnssd:      dnssd.o ../cups/$(LIBCUPS) libbac
95  
96  ipp:   ipp.o ../cups/$(LIBCUPS) libbackend.a
97         echo Linking $@...
98 -       $(CC) $(LDFLAGS) -o ipp ipp.o libbackend.a $(LIBS)
99 +       $(CC) $(LDFLAGS) -o ipp ipp.o libbackend.a $(LIBS) $(SERVERLIBS)
100         $(RM) http
101         $(LN) ipp http
102  
103 diff -up cups-2.1b1/scheduler/subscriptions.c.eggcups cups-2.1b1/scheduler/subscriptions.c
104 --- cups-2.1b1/scheduler/subscriptions.c.eggcups        2014-02-06 19:33:34.000000000 +0100
105 +++ cups-2.1b1/scheduler/subscriptions.c        2015-06-29 12:54:55.753026774 +0200
106 @@ -1293,13 +1293,13 @@ cupsd_send_dbus(cupsd_eventmask_t event,
107      what = "PrinterAdded";
108    else if (event & CUPSD_EVENT_PRINTER_DELETED)
109      what = "PrinterRemoved";
110 -  else if (event & CUPSD_EVENT_PRINTER_CHANGED)
111 -    what = "QueueChanged";
112    else if (event & CUPSD_EVENT_JOB_CREATED)
113      what = "JobQueuedLocal";
114    else if ((event & CUPSD_EVENT_JOB_STATE) && job &&
115             job->state_value == IPP_JOB_PROCESSING)
116      what = "JobStartedLocal";
117 +  else if (event & (CUPSD_EVENT_PRINTER_CHANGED|CUPSD_EVENT_JOB_STATE_CHANGED|CUPSD_EVENT_PRINTER_STATE_CHANGED))
118 +    what = "QueueChanged";
119    else
120      return;
121  
122 @@ -1335,7 +1335,7 @@ cupsd_send_dbus(cupsd_eventmask_t event,
123    dbus_message_append_iter_init(message, &iter);
124    if (dest)
125      dbus_message_iter_append_string(&iter, dest->name);
126 -  if (job)
127 +  if (job && strcmp (what, "QueueChanged") != 0)
128    {
129      dbus_message_iter_append_uint32(&iter, job->id);
130      dbus_message_iter_append_string(&iter, job->username);
This page took 0.044968 seconds and 3 git commands to generate.