【问题标题】:How do I selectively disable the GDBus "PropertiesChanged" signal?如何选择性地禁用 GDBus“PropertiesChanged”信号?
【发布时间】:2018-01-24 03:39:38
【问题描述】:

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

当一个属性改变时,会自动生成一个“PropertiesChanged”信号,这在大多数情况下都很好,但在 MPRIS 规范中,它声明当“Position”属性改变时,the "PropertiesChanged" signal should not be emitted

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

【问题讨论】:

    标签: gdbus


    【解决方案1】:

    由于missing feature in GLib,目前这是不可能的。实现该功能后,您应该能够使用 org.freedesktop.DBus.Property.EmitsChangedSignal 注释 Position 属性,以导致 gdbus-codegen 不为其发出信号。

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

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

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

    【讨论】:

    • 非常感谢——我会这样做的。 (有问题的应用是 Shairport Sync。)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-25
    相关资源
    最近更新 更多