X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fdbus-job.c;h=7346252a18a965168c8e660565d25af9dfb6c8e2;hb=1f48cf56cb2693b84fdc76dc8df0b048ed50ef43;hp=3a6e7159e9959edc41a9623d8ec2d4e90896245b;hpb=e99e38bbdcca3fe5956823bdb3d38544ccf93221;p=elogind.git
diff --git a/src/dbus-job.c b/src/dbus-job.c
index 3a6e7159e..7346252a1 100644
--- a/src/dbus-job.c
+++ b/src/dbus-job.c
@@ -25,20 +25,25 @@
#include "log.h"
#include "dbus-job.h"
-static const char introspection[] =
- DBUS_INTROSPECT_1_0_XML_DOCTYPE_DECL_NODE
- ""
- " "
- " "
- " "
- " "
- " "
- " "
- " "
- " "
- BUS_PROPERTIES_INTERFACE
- BUS_INTROSPECTABLE_INTERFACE
- "";
+#define BUS_JOB_INTERFACE \
+ " \n" \
+ " \n" \
+ " \n" \
+ " \n" \
+ " \n" \
+ " \n" \
+ " \n" \
+ " \n"
+
+#define INTROSPECTION \
+ DBUS_INTROSPECT_1_0_XML_DOCTYPE_DECL_NODE \
+ "\n" \
+ BUS_JOB_INTERFACE \
+ BUS_PROPERTIES_INTERFACE \
+ BUS_INTROSPECTABLE_INTERFACE \
+ "\n"
+
+const char bus_job_interface[] = BUS_JOB_INTERFACE;
static DEFINE_BUS_PROPERTY_APPEND_ENUM(bus_job_append_state, job_state, JobState);
static DEFINE_BUS_PROPERTY_APPEND_ENUM(bus_job_append_type, job_type, JobType);
@@ -92,7 +97,7 @@ static DBusHandlerResult bus_job_message_dispatch(Job *j, DBusMessage *message)
job_free(j);
} else
- return bus_default_message_handler(j->manager, message, introspection, properties);
+ return bus_default_message_handler(j->manager, message, INTROSPECTION, properties);
if (reply) {
if (!dbus_connection_send(m->api_bus, reply, NULL))
@@ -197,15 +202,19 @@ oom:
log_error("Failed to allocate job change signal.");
}
-void bus_job_send_removed_signal(Job *j) {
+void bus_job_send_removed_signal(Job *j, bool success) {
char *p = NULL;
DBusMessage *m = NULL;
+ dbus_bool_t b = success;
assert(j);
- if (set_isempty(j->manager->subscribed) || !j->sent_dbus_new_signal)
+ if (set_isempty(j->manager->subscribed))
return;
+ if (!j->sent_dbus_new_signal)
+ bus_job_send_change_signal(j);
+
if (!(p = job_dbus_path(j)))
goto oom;
@@ -215,6 +224,7 @@ void bus_job_send_removed_signal(Job *j) {
if (!dbus_message_append_args(m,
DBUS_TYPE_UINT32, &j->id,
DBUS_TYPE_OBJECT_PATH, &p,
+ DBUS_TYPE_BOOLEAN, &b,
DBUS_TYPE_INVALID))
goto oom;