player/Control: Change idle events from global to partition scope

This commit is contained in:
jcorporation 2022-08-28 11:28:47 +02:00
parent b2fb920d28
commit 4f8b4c605e
4 changed files with 19 additions and 7 deletions

View File

@ -194,6 +194,12 @@ Partition::OnPlayerStateChanged() noexcept
EmitIdle(IDLE_PLAYER); EmitIdle(IDLE_PLAYER);
} }
void
Partition::OnPlayerOptionsChanged() noexcept
{
EmitIdle(IDLE_OPTIONS);
}
void void
Partition::OnPlayerSync() noexcept Partition::OnPlayerSync() noexcept
{ {

View File

@ -285,6 +285,7 @@ private:
void OnPlayerSync() noexcept override; void OnPlayerSync() noexcept override;
void OnPlayerTagModified() noexcept override; void OnPlayerTagModified() noexcept override;
void OnBorderPause() noexcept override; void OnBorderPause() noexcept override;
void OnPlayerOptionsChanged() noexcept override;
/* virtual methods from class MixerListener */ /* virtual methods from class MixerListener */
void OnMixerVolumeChanged(Mixer &mixer, int volume) noexcept override; void OnMixerVolumeChanged(Mixer &mixer, int volume) noexcept override;

View File

@ -20,7 +20,6 @@
#include "Control.hxx" #include "Control.hxx"
#include "Outputs.hxx" #include "Outputs.hxx"
#include "Listener.hxx" #include "Listener.hxx"
#include "Idle.hxx"
#include "song/DetachedSong.hxx" #include "song/DetachedSong.hxx"
#include <algorithm> #include <algorithm>
@ -91,7 +90,7 @@ PlayerControl::LockStop() noexcept
LockSynchronousCommand(PlayerCommand::CLOSE_AUDIO); LockSynchronousCommand(PlayerCommand::CLOSE_AUDIO);
assert(next_song == nullptr); assert(next_song == nullptr);
idle_add(IDLE_PLAYER); listener.OnPlayerStateChanged();
} }
void void
@ -112,7 +111,7 @@ PlayerControl::Kill() noexcept
LockSynchronousCommand(PlayerCommand::EXIT); LockSynchronousCommand(PlayerCommand::EXIT);
thread.Join(); thread.Join();
idle_add(IDLE_PLAYER); listener.OnPlayerStateChanged();
} }
void void
@ -120,7 +119,7 @@ PlayerControl::PauseLocked(std::unique_lock<Mutex> &lock) noexcept
{ {
if (state != PlayerState::STOP) { if (state != PlayerState::STOP) {
SynchronousCommand(lock, PlayerCommand::PAUSE); SynchronousCommand(lock, PlayerCommand::PAUSE);
idle_add(IDLE_PLAYER); listener.OnPlayerStateChanged();
} }
} }
@ -304,7 +303,7 @@ PlayerControl::SetCrossFade(FloatDuration duration) noexcept
{ {
cross_fade.duration = std::max(duration, FloatDuration::zero()); cross_fade.duration = std::max(duration, FloatDuration::zero());
idle_add(IDLE_OPTIONS); listener.OnPlayerOptionsChanged();
} }
void void
@ -312,7 +311,7 @@ PlayerControl::SetMixRampDb(float _mixramp_db) noexcept
{ {
cross_fade.mixramp_db = _mixramp_db; cross_fade.mixramp_db = _mixramp_db;
idle_add(IDLE_OPTIONS); listener.OnPlayerOptionsChanged();
} }
void void
@ -320,5 +319,5 @@ PlayerControl::SetMixRampDelay(FloatDuration _mixramp_delay) noexcept
{ {
cross_fade.mixramp_delay = _mixramp_delay; cross_fade.mixramp_delay = _mixramp_delay;
idle_add(IDLE_OPTIONS); listener.OnPlayerOptionsChanged();
} }

View File

@ -34,6 +34,12 @@ public:
*/ */
virtual void OnPlayerStateChanged() noexcept = 0; virtual void OnPlayerStateChanged() noexcept = 0;
/**
* Some options of the player has changed. This maps to
* #IDLE_OPTIONS.
*/
virtual void OnPlayerOptionsChanged() noexcept = 0;
/** /**
* Must call playlist_sync(). * Must call playlist_sync().
*/ */