Как выборочно отключить сигнал 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, это будет оценено (по крайней мере, подпишитесь на нее, чтобы узнать, когда она будет исправлена). Я постараюсь найти время для обзора патча в ближайшее время, но не могу дать никаких гарантий.

Другие вопросы по тегам