From 25f93c2822095743f9c8d090e28c4610a324bf0f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Corentin=20No=C3=ABl?= Date: Fri, 3 Apr 2020 12:53:27 +0200 Subject: gdbus: Use GDBusProxy API to set `g-interface-info` at initialization time This allows GDBusProxy subclasses to have the g-interface-info assigned even when the class hasn't been created by Vala itself. Keep obsolete setting of 'vala-dbus-interface-info' to preserve backwards compatibility. --- codegen/valagdbusclientmodule.vala | 26 ++++++++++++-------------- 1 file changed, 12 insertions(+), 14 deletions(-) (limited to 'codegen/valagdbusclientmodule.vala') diff --git a/codegen/valagdbusclientmodule.vala b/codegen/valagdbusclientmodule.vala index 12a7693d2..2327a09aa 100644 --- a/codegen/valagdbusclientmodule.vala +++ b/codegen/valagdbusclientmodule.vala @@ -236,6 +236,17 @@ public class Vala.GDBusClientModule : GDBusModule { var proxy_instance_init = new CCodeFunction (lower_cname + "_init", "void"); proxy_instance_init.add_parameter (new CCodeParameter ("self", cname + "*")); proxy_instance_init.modifiers = CCodeModifiers.STATIC; + push_function (proxy_instance_init); + + // TODO Replaces setting of "vala-dbus-interface-info" + var dbus_proxy_cast = new CCodeFunctionCall (new CCodeIdentifier ("G_DBUS_PROXY")); + dbus_proxy_cast.add_argument (new CCodeIdentifier ("self")); + var set_interface_info = new CCodeFunctionCall (new CCodeIdentifier ("g_dbus_proxy_set_interface_info")); + set_interface_info.add_argument (dbus_proxy_cast); + set_interface_info.add_argument (new CCodeCastExpression (new CCodeUnaryExpression (CCodeUnaryOperator.ADDRESS_OF, get_interface_info (iface)), "GDBusInterfaceInfo *")); + ccode.add_expression (set_interface_info); + + pop_function (); cfile.add_function (proxy_instance_init); generate_proxy_interface_init (iface, iface); @@ -257,7 +268,6 @@ public class Vala.GDBusClientModule : GDBusModule { CCodeExpression proxy_type; CCodeExpression dbus_iface_name; - CCodeExpression dbus_iface_info; var object_type = type_arg as ObjectType; if (object_type != null) { @@ -292,15 +302,6 @@ public class Vala.GDBusClientModule : GDBusModule { dbus_iface_name = get_qdata; } - var quark = new CCodeFunctionCall (new CCodeIdentifier ("g_quark_from_static_string")); - quark.add_argument (new CCodeConstant ("\"vala-dbus-interface-info\"")); - - var get_qdata = new CCodeFunctionCall (new CCodeIdentifier ("g_type_get_qdata")); - get_qdata.add_argument (get_type_id_expression (type_arg)); - get_qdata.add_argument (quark); - - dbus_iface_info = get_qdata; - if (bus_get_proxy_async || conn_get_proxy_async) { if (ma.member_name == "end" && ma.inner.symbol_reference == ma.symbol_reference) { // method can fail @@ -397,10 +398,6 @@ public class Vala.GDBusClientModule : GDBusModule { ccall.add_argument (get_cvalue (object_path)); ccall.add_argument (new CCodeConstant ("\"g-interface-name\"")); ccall.add_argument (dbus_iface_name); - if (dbus_iface_info != null) { - ccall.add_argument (new CCodeConstant ("\"g-interface-info\"")); - ccall.add_argument (dbus_iface_info); - } ccall.add_argument (new CCodeConstant ("NULL")); if (bus_get_proxy_async || conn_get_proxy_async) { @@ -1212,6 +1209,7 @@ public class Vala.GDBusClientModule : GDBusModule { block.add_statement (new CCodeExpressionStatement (set_qdata)); + // TODO Replaced by g_dbus_proxy_set_interface_info() call in *_init quark = new CCodeFunctionCall (new CCodeIdentifier ("g_quark_from_static_string")); quark.add_argument (new CCodeConstant ("\"vala-dbus-interface-info\"")); -- cgit v1.2.1