From 47a109c2410a0f057917ad0b80b2853d78874ed1 Mon Sep 17 00:00:00 2001 From: Sebastian Wick Date: Tue, 16 Sep 2025 21:43:32 +0200 Subject: [PATCH] gdbus-codegen: Allow extensions to override the InterfaceSkeleton type The libdex gdbus-codegen extension will use a GDBusInterfaceSkeleton subtype to dispatch method calls in a fiber. --- gio/gdbus-2.0/codegen/codegen.py | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/gio/gdbus-2.0/codegen/codegen.py b/gio/gdbus-2.0/codegen/codegen.py index 2afb7b300..4173bf802 100644 --- a/gio/gdbus-2.0/codegen/codegen.py +++ b/gio/gdbus-2.0/codegen/codegen.py @@ -144,6 +144,7 @@ class HeaderCodeGenerator: self.glib_min_required = glib_min_required self.symbol_decorator = symbol_decorator self.symbol_decorator_header = symbol_decorator_header + self.skeleton_type_camel = "GDBusInterfaceSkeleton" self.outfile = outfile self.ext = ExtensionHeaderCodeGenerator(ext, self) @@ -643,13 +644,13 @@ class HeaderCodeGenerator: self.outfile.write("struct _%sSkeleton\n" % (i.camel_name)) self.outfile.write("{\n") self.outfile.write(" /*< private >*/\n") - self.outfile.write(" GDBusInterfaceSkeleton parent_instance;\n") + self.outfile.write(" %s parent_instance;\n" % self.skeleton_type_camel) self.outfile.write(" %sSkeletonPrivate *priv;\n" % (i.camel_name)) self.outfile.write("};\n") self.outfile.write("\n") self.outfile.write("struct _%sSkeletonClass\n" % (i.camel_name)) self.outfile.write("{\n") - self.outfile.write(" GDBusInterfaceSkeletonClass parent_class;\n") + self.outfile.write(" %sClass parent_class;\n" % self.skeleton_type_camel) self.outfile.write("};\n") self.outfile.write("\n") if self.symbol_decorator is not None: @@ -1521,6 +1522,7 @@ class CodeGenerator: self.docbook_gen = docbook_gen self.glib_min_required = glib_min_required self.symbol_decoration_define = symbol_decoration_define + self.skeleton_type_upper = "G_TYPE_DBUS_INTERFACE_SKELETON" self.outfile = outfile self.marshallers = set() self.ext = ExtensionCodeGenerator(ext, self) @@ -4147,8 +4149,8 @@ class CodeGenerator: self.outfile.write("#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38\n") self.outfile.write( - "G_DEFINE_TYPE_WITH_CODE (%sSkeleton, %s_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,\n" - % (i.camel_name, i.name_lower) + "G_DEFINE_TYPE_WITH_CODE (%sSkeleton, %s_skeleton, %s,\n" + % (i.camel_name, i.name_lower, self.skeleton_type_upper) ) self.outfile.write( " G_ADD_PRIVATE (%sSkeleton)\n" % (i.camel_name) @@ -4159,8 +4161,8 @@ class CodeGenerator: ) self.outfile.write("#else\n") self.outfile.write( - "G_DEFINE_TYPE_WITH_CODE (%sSkeleton, %s_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,\n" - % (i.camel_name, i.name_lower) + "G_DEFINE_TYPE_WITH_CODE (%sSkeleton, %s_skeleton, %s,\n" + % (i.camel_name, i.name_lower, self.skeleton_type_upper) ) self.outfile.write( " G_IMPLEMENT_INTERFACE (%sTYPE_%s, %s_skeleton_iface_init))\n\n"