diff options
author | Corentin Noël <corentin@elementary.io> | 2020-04-03 12:53:27 +0200 |
---|---|---|
committer | Rico Tzschichholz <ricotz@ubuntu.com> | 2020-04-05 17:22:04 +0200 |
commit | 25f93c2822095743f9c8d090e28c4610a324bf0f (patch) | |
tree | ae3227d96f8bb0c753afeb2f69cbc41e909526cd /codegen/valagdbusclientmodule.vala | |
parent | 61e69f43be39cbd57df4fc4ea4d63c92ac57ebb0 (diff) | |
download | vala-25f93c2822095743f9c8d090e28c4610a324bf0f.tar.gz |
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.
Diffstat (limited to 'codegen/valagdbusclientmodule.vala')
-rw-r--r-- | codegen/valagdbusclientmodule.vala | 26 |
1 files changed, 12 insertions, 14 deletions
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\"")); |