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.
This commit is contained in:
outfoxxed 2024-08-18 13:41:16 -07:00
parent e223408143
commit 5a038f085d
Signed by: outfoxxed
GPG key ID: 4C88A185FB89301E

View file

@ -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<QString>()) {
auto trackId = trackidVariant.toString();
if (trackId != this->mTrackId) {
this->mTrackId = trackId;
trackChanged = true;
if (trackidVariant.isValid()) {
if (trackidVariant.canConvert<QString>()) {
trackId = trackidVariant.toString();
} else if (trackidVariant.canConvert<QDBusObjectPath>()) {
trackId = trackidVariant.value<QDBusObjectPath>().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<QString>()) {