chiark / gitweb /
sd-bus: add 'offset' member for vtable methods
[elogind.git] / src / libelogind / sd-bus / bus-objects.c
index 7e3cd86f6567a92d0912f910e462426818af9a08..c25293e5e96cb9782091ee414417fdc7a0c8a5cd 100644 (file)
@@ -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)