mpriscontrol plugin should ignore playerctld

playerctld (https://github.com/altdesktop/playerctl/issues/161) is a proxy daemon for the currently active player by playerctl, which facilitates managing mpris players, forwarding requests to the currently active/last active player, and sorting out troubles with selecting the correct player manually.
Unfortunately, it also creates an annoying issue with kdeconnect: when playing media on the phone, kdeconnect publishes the state to the computer through the mprisremote plugin - then, playerctld picks it up as active player, and registers its own mpris media player. As a result, the mpriscontrol plugin sees this as a running media player, and in turn, publishes the state back to the phone, essentially creating another media session on the phone, resulting in two notifications. As playerctld is _always_ only a proxy to another media player (or kdeconnect), it can safely be ignored, just like kdeconnect itself already is. This commit adds an if check doing exactly that.
This commit is contained in:
Max Rumpf 2020-05-20 21:12:33 +00:00 committed by Nicolas Fella
parent b57a321632
commit fbadf09fb5

View file

@ -71,6 +71,8 @@ void MprisControlPlugin::serviceOwnerChanged(const QString& serviceName, const Q
{ {
if (!serviceName.startsWith(QStringLiteral("org.mpris.MediaPlayer2."))) return; if (!serviceName.startsWith(QStringLiteral("org.mpris.MediaPlayer2."))) return;
if (serviceName.startsWith(QStringLiteral("org.mpris.MediaPlayer2.kdeconnect."))) return; if (serviceName.startsWith(QStringLiteral("org.mpris.MediaPlayer2.kdeconnect."))) return;
// playerctld is a only a proxy to other media players, and can thus safely be ignored
if (serviceName == QStringLiteral("org.mpris.MediaPlayer2.playerctld")) return;
if (!oldOwner.isEmpty()) { if (!oldOwner.isEmpty()) {
qCDebug(KDECONNECT_PLUGIN_MPRIS) << "MPRIS service" << serviceName << "just went offline"; qCDebug(KDECONNECT_PLUGIN_MPRIS) << "MPRIS service" << serviceName << "just went offline";