我正在使用gdbus- codegen 工具自动生成的 GDBus 工具为 C 中的应用程序构建MPRIS D-Bus 接口。
当一个属性被改变时,会自动生成一个“PropertiesChanged”信号,这在大多数情况下都很好,但是在 MPRIS 规范中,它规定当“Position”属性发生变化时,不应该发出“PropertiesChanged”信号。
有什么好的方法可以防止信号被发送吗?
我正在使用gdbus- codegen 工具自动生成的 GDBus 工具为 C 中的应用程序构建MPRIS D-Bus 接口。
当一个属性被改变时,会自动生成一个“PropertiesChanged”信号,这在大多数情况下都很好,但是在 MPRIS 规范中,它规定当“Position”属性发生变化时,不应该发出“PropertiesChanged”信号。
有什么好的方法可以防止信号被发送吗?
由于GLib 中缺少功能,目前这是不可能的。实现该功能后,您应该能够对Position
属性进行注释,org.freedesktop.DBus.Property.EmitsChangedSignal
以gdbus-codegen
使其不发出信号。
这将使用以下自省 XML,例如:
<property name="Position" type="x" access="read">
<annotation name="org.freedesktop.DBus.Property.EmitsChangedSignal" value="false"/>
</property>
如果您想帮助解决 GLib 错误,我们将不胜感激(至少,订阅它以了解它何时修复)。我会尽快找时间审查补丁,但不能保证。