我想用 glib 注册多个媒体播放器。最小(非)工作示例在这里。据我了解规范,我应该用一个名称导出许多对象,/org/mpris/MediaPlayer2这很奇怪。
1 回答
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()for的其他调用者共享bus_type。如果您需要私人消息总线连接,请使用g_dbus_address_get_for_bus_sync()和g_dbus_connection_new_for_address()。
于 2017-06-28T10:15:07.477 回答