diff --git a/CHANGELOG.md b/CHANGELOG.md index 38257fa3..7ca0893a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -26,6 +26,7 @@ synchronization attempts. * Support gstreamer's udpsink as a data source for visualization (Mopidy). * Deprecate `visualizer_fifo_path` in favor of `visualizer_data_source`. +* Don't run volume changing actions if there is no mixer. # ncmpcpp-0.8.2 (2018-04-11) * Help screen: fixed display of EoF keycode diff --git a/src/actions.cpp b/src/actions.cpp index f07feab6..9d6392ea 100644 --- a/src/actions.cpp +++ b/src/actions.cpp @@ -621,11 +621,21 @@ void SlaveScreen::run() drawHeader(); } +bool VolumeUp::canBeRun() +{ + return Status::State::volume() >= 0; +} + void VolumeUp::run() { Mpd.ChangeVolume(static_cast(Config.volume_change_step)); } +bool VolumeDown::canBeRun() +{ + return Status::State::volume() >= 0; +} + void VolumeDown::run() { Mpd.ChangeVolume(-static_cast(Config.volume_change_step)); @@ -1356,6 +1366,11 @@ void SetCrossfade::run() Mpd.SetCrossfade(crossfade); } +bool SetVolume::canBeRun() +{ + return Status::State::volume() >= 0; +} + void SetVolume::run() { using Global::wFooter; diff --git a/src/actions.h b/src/actions.h index 809e94ee..153f1bad 100644 --- a/src/actions.h +++ b/src/actions.h @@ -428,6 +428,7 @@ struct VolumeUp: BaseAction VolumeUp(): BaseAction(Type::VolumeUp, "volume_up") { } private: + virtual bool canBeRun() override; virtual void run() override; }; @@ -436,6 +437,7 @@ struct VolumeDown: BaseAction VolumeDown(): BaseAction(Type::VolumeDown, "volume_down") { } private: + virtual bool canBeRun() override; virtual void run() override; }; @@ -791,6 +793,7 @@ struct SetVolume: BaseAction SetVolume(): BaseAction(Type::SetVolume, "set_volume") { } private: + virtual bool canBeRun() override; virtual void run() override; };