From fd5970b647cf25171380cb4eef62069ad2e639aa Mon Sep 17 00:00:00 2001 From: Jonas Kvinge Date: Sat, 29 Jan 2022 20:32:15 +0100 Subject: [PATCH] Player: Don't set volume lower than 0 or higher than 100. Fixes #884 --- src/core/player.cpp | 25 ++++++++++++++++++++++++- src/core/player.h | 4 ++-- 2 files changed, 26 insertions(+), 3 deletions(-) diff --git a/src/core/player.cpp b/src/core/player.cpp index c19be7199..edad4e9ea 100644 --- a/src/core/player.cpp +++ b/src/core/player.cpp @@ -23,6 +23,7 @@ #include "player.h" +#include #include #include @@ -632,6 +633,12 @@ void Player::EngineStateChanged(const Engine::State state) { } +uint Player::GetVolume() const { + + return engine_->volume(); + +} + void Player::SetVolume(const uint value) { uint old_volume = engine_->volume(); @@ -646,7 +653,23 @@ void Player::SetVolume(const uint value) { } -uint Player::GetVolume() const { return engine_->volume(); } +void Player::VolumeUp() { + + uint old_volume = GetVolume(); + uint new_volume = std::min(old_volume + 5, static_cast(100)); + if (new_volume == old_volume) return; + SetVolume(new_volume); + +} + +void Player::VolumeDown() { + + uint old_volume = GetVolume(); + uint new_volume = static_cast(std::max(static_cast(old_volume) - 5, 0)); + if (new_volume == old_volume) return; + SetVolume(new_volume); + +} void Player::PlayAt(const int index, const quint64 offset_nanosec, Engine::TrackChangeFlags change, const Playlist::AutoScroll autoscroll, const bool reshuffle, const bool force_inform) { diff --git a/src/core/player.h b/src/core/player.h index 39819e6b1..615a504de 100644 --- a/src/core/player.h +++ b/src/core/player.h @@ -167,8 +167,8 @@ class Player : public PlayerInterface { void Previous() override; void PlayPlaylist(const QString &playlist_name) override; void SetVolume(const uint value) override; - void VolumeUp() override { SetVolume(GetVolume() + 5); } - void VolumeDown() override { SetVolume(GetVolume() - 5); } + void VolumeUp() override; + void VolumeDown() override; void SeekTo(const quint64 seconds) override; void SeekForward() override; void SeekBackward() override;