Как выборочно отключить сигнал GDBus "PropertiesChanged"?
Я создаю интерфейс MPRIS D-Bus для приложения на C, используя средства GDBus, сгенерированные автоматически с помощью инструмента gdbus-codegen.
Когда свойство изменяется, автоматически генерируется сигнал "PropertiesChanged", который в большинстве случаев подходит, но в спецификации MPRIS говорится, что при изменении свойства " Position " сигнал "PropertiesChanged" не должен передаваться.
Есть ли хороший способ предотвратить отправку сигнала?
1 ответ
В настоящее время это невозможно из-за отсутствия функции в 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, это будет оценено (по крайней мере, подпишитесь на нее, чтобы узнать, когда она будет исправлена). Я постараюсь найти время для обзора патча в ближайшее время, но не могу дать никаких гарантий.