diff --git a/src/services/mpris/player.cpp b/src/services/mpris/player.cpp index 642ca3bd..c4fe2ac9 100644 --- a/src/services/mpris/player.cpp +++ b/src/services/mpris/player.cpp @@ -237,7 +237,7 @@ void MprisPlayer::setPosition(qreal position) { this->player->Seek(target - pos); } - this->bpPosition = target; + this->setPosition(target); } void MprisPlayer::onPositionUpdated() { @@ -248,11 +248,16 @@ void MprisPlayer::onPositionUpdated() { if (firstChange) emit this->positionSupportedChanged(); } +void MprisPlayer::setPosition(qlonglong position) { + this->bpPosition = position; + this->onPositionUpdated(); +} + void MprisPlayer::onExportedPositionChanged() { if (!this->lengthSupported()) emit this->lengthChanged(); } -void MprisPlayer::onSeek(qlonglong time) { this->bpPosition = time; } +void MprisPlayer::onSeek(qlonglong time) { this->setPosition(time); } qreal MprisPlayer::length() const { if (this->bInternalLength == -1) { diff --git a/src/services/mpris/player.hpp b/src/services/mpris/player.hpp index 7637c10a..2eda305d 100644 --- a/src/services/mpris/player.hpp +++ b/src/services/mpris/player.hpp @@ -391,6 +391,8 @@ private slots: private: void onMetadataChanged(); void onPositionUpdated(); + // call instead of setting bpPosition + void setPosition(qlonglong position); void requestPositionUpdate() { this->pPosition.requestUpdate(); }; // clang-format off @@ -457,7 +459,7 @@ private: QS_DBUS_PROPERTY_BINDING(MprisPlayer, pCanSeek, bpCanSeek, playerProperties, "CanSeek"); QS_DBUS_PROPERTY_BINDING(MprisPlayer, pCanGoNext, bpCanGoNext, playerProperties, "CanGoNext"); QS_DBUS_PROPERTY_BINDING(MprisPlayer, pCanGoPrevious, bpCanGoPrevious, playerProperties, "CanGoPrevious"); - QS_DBUS_PROPERTY_BINDING(MprisPlayer, qlonglong, pPosition, bpPosition, playerProperties, "Position", false); + QS_DBUS_PROPERTY_BINDING(MprisPlayer, qlonglong, pPosition, bpPosition, onPositionUpdated, playerProperties, "Position", false); QS_DBUS_PROPERTY_BINDING(MprisPlayer, pVolume, bVolume, playerProperties, "Volume", false); QS_DBUS_PROPERTY_BINDING(MprisPlayer, pMetadata, bpMetadata, playerProperties, "Metadata"); QS_DBUS_PROPERTY_BINDING(MprisPlayer, pPlaybackStatus, bpPlaybackStatus, playerProperties, "PlaybackStatus"); @@ -466,8 +468,6 @@ private: QS_DBUS_PROPERTY_BINDING(MprisPlayer, pMinRate, bMinRate, playerProperties, "MinimumRate", false); QS_DBUS_PROPERTY_BINDING(MprisPlayer, pMaxRate, bMaxRate, playerProperties, "MaximumRate", false); QS_DBUS_PROPERTY_BINDING(MprisPlayer, pShuffle, bShuffle, playerProperties, "Shuffle", false); - - QS_BINDING_SUBSCRIBE_METHOD(MprisPlayer, bpPosition, onPositionUpdated, onValueChanged); // clang-format on QDateTime lastPositionTimestamp;