0

基于 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>"

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

提前致谢

4

1 回答 1

0

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

所以,

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);

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

于 2022-01-13T08:15:23.233 回答