--- cups-1.1.18/scheduler/main.c.dbus 2003-04-12 19:32:53.000000000 -0400 +++ cups-1.1.18/scheduler/main.c 2003-04-12 19:41:35.000000000 -0400 @@ -42,6 +42,8 @@ #include #include +#include + #if defined(HAVE_MALLOC_H) && defined(HAVE_MALLINFO) # include #endif /* HAVE_MALLOC_H && HAVE_MALLINFO */ @@ -62,6 +64,50 @@ static void usage(void); +static DBusConnection *dbus_connection = NULL; + +static int +init_dbus (void) +{ + DBusConnection *connection; + DBusMessage *message, *reply; + DBusError error; + + if (dbus_connection && + !dbus_connection_get_is_connected (dbus_connection)) { + dbus_connection_unref (dbus_connection); + dbus_connection = NULL; + } + + dbus_error_init (&error); + connection = dbus_bus_get (DBUS_BUS_SYSTEM, &error); + if (connection == NULL) { + dbus_error_free (&error); + return -1; + } + + dbus_connection = connection; + return 0; +} + +int dbus_broadcast (void) +{ + DBusMessage *message; + + if (!dbus_connection || !dbus_connection_get_is_connected (dbus_connection)) { + if (init_dbus () || !dbus_connection) + return -1; + } + + message = dbus_message_new (DBUS_SERVICE_BROADCAST, + "com.redhat.PrinterSpooler.QueueChanged"); + dbus_connection_send (dbus_connection, message, NULL); + dbus_connection_flush (dbus_connection); + dbus_message_unref (message); + + return 0; +} + /* * 'main()' - Main entry for the CUPS scheduler. */ @@ -329,6 +375,8 @@ if (only_ppds) return 0; + init_dbus (); + #ifdef __sgi /* * Try to create a fake lpsched lock file if one is not already there. --- cups-1.1.18/scheduler/cupsd.h.dbus 2002-12-17 14:00:15.000000000 -0500 +++ cups-1.1.18/scheduler/cupsd.h 2003-04-12 19:32:53.000000000 -0400 @@ -171,6 +171,7 @@ extern void StartServer(void); extern void StopServer(void); +extern int dbus_broadcast (void); /* * End of "$Id: cupsd.h,v 1.36 2002/12/17 19:00:15 swdev Exp $". --- cups-1.1.18/scheduler/Makefile.dbus 2002-12-17 14:00:12.000000000 -0500 +++ cups-1.1.18/scheduler/Makefile 2003-04-12 19:32:53.000000000 -0400 @@ -24,6 +24,9 @@ include ../Makedefs +CFLAGS += `pkg-config --cflags dbus-1.0` +DBUS_LDFLAGS += `pkg-config --libs dbus-1.0` + CUPSDOBJS = auth.o banners.o cert.o classes.o client.o conf.o devices.o \ dirsvc.o main.o ipp.o listen.o job.o log.o network.o \ ppds.o printers.o quotas.o server.o @@ -80,7 +83,8 @@ cupsd: $(CUPSDOBJS) libmime.a ../cups/$(LIBCUPS) echo Linking $@... $(CC) $(LDFLAGS) -o cupsd $(CUPSDOBJS) libmime.a \ - $(LIBZ) $(SSLLIBS) $(LIBSLP) $(PAMLIBS) $(LIBS) $(LIBMALLOC) + $(LIBZ) $(SSLLIBS) $(LIBSLP) $(PAMLIBS) $(LIBS) $(LIBMALLOC) \ + $(DBUS_LDFLAGS) # --- cups-1.1.18/scheduler/job.c.dbus 2002-12-17 14:00:16.000000000 -0500 +++ cups-1.1.18/scheduler/job.c 2003-04-12 19:32:53.000000000 -0400 @@ -108,6 +108,7 @@ else Jobs = job; + dbus_broadcast (); return (job); } @@ -201,8 +202,11 @@ NumJobs --; } + dbus_broadcast (); return; } + + dbus_broadcast (); }