From 5a038f085dce538406b8912135a3215662f01090 Mon Sep 17 00:00:00 2001 From: outfoxxed Date: Sun, 18 Aug 2024 13:41:16 -0700 Subject: [PATCH] service/mpris: support trackids in object path form Chromium reports trackids as object paths, which caused us to fall back to Seek, which is also entirely broken on chromium. --- src/services/mpris/player.cpp | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/src/services/mpris/player.cpp b/src/services/mpris/player.cpp index 48bd4768..b2d4af60 100644 --- a/src/services/mpris/player.cpp +++ b/src/services/mpris/player.cpp @@ -271,16 +271,21 @@ void MprisPlayer::onMetadataChanged() { auto trackChanged = false; + QString trackId; auto trackidVariant = this->pMetadata.get().value("mpris:trackid"); - if (trackidVariant.isValid() && trackidVariant.canConvert()) { - auto trackId = trackidVariant.toString(); - - if (trackId != this->mTrackId) { - this->mTrackId = trackId; - trackChanged = true; + if (trackidVariant.isValid()) { + if (trackidVariant.canConvert()) { + trackId = trackidVariant.toString(); + } else if (trackidVariant.canConvert()) { + trackId = trackidVariant.value().path(); } } + if (trackId != this->mTrackId) { + this->mTrackId = trackId; + trackChanged = true; + } + // Helps to catch players without trackid. auto urlVariant = this->pMetadata.get().value("xesam:url"); if (urlVariant.isValid() && urlVariant.canConvert()) {