return ret;
}
+static void cb_pending(GDBusProxy *proxy, GAsyncResult *res, gpointer user_data)
+{
+ GVariant *ret;
+ GError *err;
+
+ err = NULL;
+ ret = g_dbus_proxy_call_finish(proxy, res, &err);
+ if (!ret) {
+ DEBUGOUT("%s: %s\n", __func__, err->message);
+ g_clear_error(&err);
+ }
+
+ g_variant_unref(ret);
+}
+
+static int set_prop_async(GDBusProxy *proxy, const char *name, const char *prop_name, GVariant *value)
+{
+ gchar *obj_name;
+
+ obj_name = g_strdup_printf("org.automotive.%s", name);
+ if (!obj_name)
+ return -ENOMEM;
+
+ g_dbus_proxy_call(proxy,
+ "Set",
+ g_variant_new("(ssv)", obj_name, prop_name, value),
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ NULL,
+ (GAsyncReadyCallback)cb_pending,
+ NULL);
+
+ g_free(obj_name);
+ return 0;
+}
+
static int set_prop(GDBusProxy *proxy, const char *name, const char *prop_name, GVariant *value)
{
GError *err;
return -EINVAL;
}
- ret = set_prop(objproxy, obj_name, prop_name, value);
+ ret = set_prop_async(objproxy, obj_name, prop_name, value);
if (ret != 0) {
g_object_unref(objproxy);
return ret;