【问题标题】:Gdbus property set form client not workingGdbus 属性设置表单客户端不工作
【发布时间】:2022-01-06 13:49:22
【问题描述】:

基于 fatmimin hello world 示例,我在界面中添加了一个属性:

        <property name="Sputulant" type="i" access="readwrite"/>

make gen 做它的事,产生两个调用的函数:

min_min_bus_gdbus_set_sputulant()
min_min_bus_gdbus_get_sputulant()

我没有在 server.c 中添加任何代码来“连接”这个属性(就像 Hello World 方法一样,使用 g_signal_connect())

当从客户端调用这些时,只有 get 函数起作用。我无法设置值。

使用 gdbus 工具确实有效:

gdbus call -e -d com.fatminmin -o /com/fatminmin/GDBUS -m org.freedesktop.DBus.Properties.Set "com.fatminmin.GDBUS" "Sputulant" "<123>"

我已经研究了好几天了,找不到任何属性示例代码或任何其他建议,那么我在这里做错了什么?

提前致谢

【问题讨论】:

  • 从客户端使用它是可行的:``` con = g_bus_get_sync(G_BUS_TYPE_SESSION, NULL, &error);结果= g_dbus_connection_call_sync(con,“com.fatminmin”,“/com/fatminmin/GDBUS”,“org.freedesktop.DBus.Properties”,“设置”,g_variant_new(“(ssv)”,“com.fatminmin.GDBUS” , "Sputulant", g_variant_new("i", 235)), NULL, G_DBUS_CALL_FLAGS_NONE, -1, NULL, &error); g_object_unref(con); ```

标签: properties gdbus


【解决方案1】:

好的,原因是您不能使用与获取属性相同的代理句柄来设置属性。

所以,

proxy = lkbr_bus_gdbus_proxy_new_for_bus_sync(G_BUS_TYPE_SESSION, G_DBUS_PROXY_FLAGS_NONE,
"com.lkbr", "/com/lkbr/GDBUS", NULL, &error);

lkbr_bus_gdbus_set_sputulant(proxy,  235);
g_object_unref(proxy);

工作,创建一个新代理,并取消它,因为每次调用似乎都是要走的路

【讨论】:

    猜你喜欢
    • 2015-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-02
    • 1970-01-01
    • 2014-10-19
    相关资源
    最近更新 更多