diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/dbus-common.c | 6 | ||||
-rw-r--r-- | src/dbus-common.h | 2 | ||||
-rw-r--r-- | src/dbus-manager.c | 4 |
3 files changed, 8 insertions, 4 deletions
diff --git a/src/dbus-common.c b/src/dbus-common.c index 2905ac3c83..fc97108e95 100644 --- a/src/dbus-common.c +++ b/src/dbus-common.c @@ -402,6 +402,7 @@ get_prop: const BusProperty *p; DBusMessageIter sub; char *sig; + void *data; if (!dbus_message_iter_init(message, &iter) || dbus_message_iter_get_arg_type(&iter) != DBUS_TYPE_STRING) @@ -456,7 +457,10 @@ set_prop: dbus_free(sig); - r = p->set(&sub, property); + data = (char*)bp->base + p->offset; + if (p->indirect) + data = *(void**)data; + r = p->set(&sub, property, data); if (r < 0) { if (r == -ENOMEM) goto oom; diff --git a/src/dbus-common.h b/src/dbus-common.h index 15811a7e50..1dc0f591d0 100644 --- a/src/dbus-common.h +++ b/src/dbus-common.h @@ -93,7 +93,7 @@ int bus_connect_system_polkit(DBusConnection **_bus, DBusError *error); const char *bus_error_message(const DBusError *error); typedef int (*BusPropertyCallback)(DBusMessageIter *iter, const char *property, void *data); -typedef int (*BusPropertySetCallback)(DBusMessageIter *iter, const char *property); +typedef int (*BusPropertySetCallback)(DBusMessageIter *iter, const char *property, void *data); typedef struct BusProperty { const char *property; /* name of the property */ diff --git a/src/dbus-manager.c b/src/dbus-manager.c index 0a6e55d87d..3bf0c07b88 100644 --- a/src/dbus-manager.c +++ b/src/dbus-manager.c @@ -326,7 +326,7 @@ static int bus_manager_append_log_target(DBusMessageIter *i, const char *propert return 0; } -static int bus_manager_set_log_target(DBusMessageIter *i, const char *property) { +static int bus_manager_set_log_target(DBusMessageIter *i, const char *property, void *data) { const char *t; assert(i); @@ -351,7 +351,7 @@ static int bus_manager_append_log_level(DBusMessageIter *i, const char *property return 0; } -static int bus_manager_set_log_level(DBusMessageIter *i, const char *property) { +static int bus_manager_set_log_level(DBusMessageIter *i, const char *property, void *data) { const char *t; assert(i); |