summaryrefslogtreecommitdiff
path: root/src/libelogind
diff options
context:
space:
mode:
authordaurnimator <quae@daurnimator.com>2015-07-24 22:22:54 +1000
committerSven Eden <yamakuzure@gmx.net>2017-03-14 10:07:15 +0100
commit22debb8b98b531ca075d9c19faedff58b9b1c0d7 (patch)
treed4995285eaf8fd5048666e3b0909dfc552b9fb9c /src/libelogind
parentf95b4196af441a62980cc2ec1e72993e2a2521b6 (diff)
sd-bus: add 'offset' member for vtable methods
Defaults to zero, which retains the current behaviour. Fixes #577
Diffstat (limited to 'src/libelogind')
-rw-r--r--src/libelogind/sd-bus/bus-objects.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/libelogind/sd-bus/bus-objects.c b/src/libelogind/sd-bus/bus-objects.c
index 7e3cd86f6..c25293e5e 100644
--- a/src/libelogind/sd-bus/bus-objects.c
+++ b/src/libelogind/sd-bus/bus-objects.c
@@ -68,6 +68,12 @@ static int node_vtable_get_userdata(
return 1;
}
+static void *vtable_method_convert_userdata(const sd_bus_vtable *p, void *u) {
+ assert(p);
+
+ return (uint8_t*) u + p->x.method.offset;
+}
+
static void *vtable_property_convert_userdata(const sd_bus_vtable *p, void *u) {
assert(p);
@@ -364,6 +370,8 @@ static int method_callbacks_run(
if (bus->nodes_modified)
return 0;
+ u = vtable_method_convert_userdata(c->vtable, u);
+
*found_object = true;
if (c->last_iteration == bus->iteration_counter)