Зарегистрируйте более одного игрока MPRIS в GDBus
Я хочу зарегистрировать более одного медиаплеера в glib. Минимальный (не) рабочий пример здесь. Как я могу понять спецификацию, я должен экспортировать много объектов с одним именем /org/mpris/MediaPlayer2
и это странно.
1 ответ
Если у вас есть несколько медиаплееров в одном процессе, вам нужно будет открыть одно соединение D-Bus с сессионной шиной для каждого из них и открыть отдельное /org/mpris/MediaPlayer2
объект на каждом соединении. Вы не можете выставить несколько объектов по одному пути в одном соединении D-Bus.
Помните, что если вы используете g_bus_get_sync()
чтобы получить соединение с шиной, он будет возвращать одноканальное соединение сессионной шины - то есть одно и то же соединение каждый раз, когда вы вызываете его. Для того, чтобы установить несколько подключений к шине сеанса, вам необходимо подключиться с помощью g_dbus_address_get_for_bus_sync()
а также g_dbus_connection_new_for_address()
, как указано в документации для g_bus_get_sync()
:
Возвращенный объект является одиночным, то есть совместно используемым с другими вызывающими
g_bus_get()
а такжеg_bus_get_sync()
заbus_type
, В случае, если вам нужно подключение к шине личных сообщений, используйтеg_dbus_address_get_for_bus_sync()
а такжеg_dbus_connection_new_for_address()
,