From c9caa7f034de9f86a17aaf2f5e4dd7836ee6fdc1 Mon Sep 17 00:00:00 2001 From: Jonas Kvinge Date: Fri, 11 Feb 2022 20:26:41 +0100 Subject: [PATCH] Mpris2: Fix incorrect rounding when setting volume Fixes #894 --- src/core/mpris2.cpp | 8 ++++++-- src/core/mpris2.h | 2 +- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/core/mpris2.cpp b/src/core/mpris2.cpp index 2e246eb17..87feb782e 100644 --- a/src/core/mpris2.cpp +++ b/src/core/mpris2.cpp @@ -410,9 +410,13 @@ void Mpris2::AlbumCoverLoaded(const Song &song, const AlbumCoverLoaderResult &re } -double Mpris2::Volume() const { return app_->player()->GetVolume() / 100.0; } +double Mpris2::Volume() const { + return app_->player()->GetVolume() / 100.0; +} -void Mpris2::SetVolume(double value) { app_->player()->SetVolume(static_cast(value * 100)); } +void Mpris2::SetVolume(const double value) { + app_->player()->SetVolume(static_cast(std::max(std::min(lround(value * 100.0), 100L), 0L))); +} qint64 Mpris2::Position() const { return app_->player()->engine()->position_nanosec() / kNsecPerUsec; diff --git a/src/core/mpris2.h b/src/core/mpris2.h index fbc7e98f3..505d51e9b 100644 --- a/src/core/mpris2.h +++ b/src/core/mpris2.h @@ -145,7 +145,7 @@ class Mpris2 : public QObject { void SetShuffle(bool enable); QVariantMap Metadata() const; double Volume() const; - void SetVolume(double value); + void SetVolume(const double value); qint64 Position() const; double MaximumRate() const; double MinimumRate() const;