0

我正在使用gdbus- codegen 工具自动生成的 GDBus 工具为 C 中的应用程序构建MPRIS D-Bus 接口。

当一个属性被改变时,会自动生成一个“PropertiesChanged”信号,这在大多数情况下都很好,但是在 MPRIS 规范中,它规定当“Position”属性发生变化时,不应该发出“PropertiesChanged”信号

有什么好的方法可以防止信号被发送吗?

4

1 回答 1

1

由于GLib 中缺少功能,目前这是不可能的。实现该功能后,您应该能够对Position属性进行注释,org.freedesktop.DBus.Property.EmitsChangedSignalgdbus-codegen使其不发出信号。

这将使用以下自省 XML,例如:

<property name="Position" type="x" access="read">
  <annotation name="org.freedesktop.DBus.Property.EmitsChangedSignal" value="false"/>
</property>

如果您想帮助解决 GLib 错误,我们将不胜感激(至少,订阅它以了解它何时修复)。我会尽快找时间审查补丁,但不能保证。

于 2018-01-23T19:39:38.190 回答