dataengines/mpris2: explicitly wait 100ms before adding new media player
Due to async nature of DBus, when a media player registers a service, the service may not be able to provide both MPRIS2 object paths.
Here is an example:
g_bus_own_name_on_connection (bus, "org.mpris.MediaPlayer2.buggyplayer", (GBusNameOwnerFlags) 0, nullptr, nullptr, nullptr, nullptr);
GObject *object_core = (GObject *)mpris_media_player2_skeleton_new();
// ...set properties for org.mpris.MediaPlayer2, connect to signals
GObject *object_player = (GObject *)mpris_media_player2_player_skeleton_new();
// ...set properties for org.mpris.MediaPlayer2.Player, connect to signals
g_dbus_interface_skeleton_export ((GDBusInterfaceSkeleton *)object_core, bus, "/org/mpris/MediaPlayer2", & error)
g_dbus_interface_skeleton_export ((GDBusInterfaceSkeleton *)object_player, bus, "/org/mpris/MediaPlayer2", & error)
Until the last g_dbus_interface_skeleton_export
is called, the service
is unable to provide a valid MPRIS2 interface, so the player will not be
accepted by the data engine. This can be worked around by waiting 100ms
before querying properties from the service.