player/Listener: add virtual method OnPlayerError()
Replaces two global idle_add() calls.
This commit is contained in:
@@ -19,6 +19,7 @@
|
||||
|
||||
#include "Control.hxx"
|
||||
#include "Outputs.hxx"
|
||||
#include "Listener.hxx"
|
||||
#include "Idle.hxx"
|
||||
#include "song/DetachedSong.hxx"
|
||||
|
||||
@@ -190,6 +191,9 @@ PlayerControl::SetError(PlayerError type, std::exception_ptr &&_error) noexcept
|
||||
|
||||
error_type = type;
|
||||
error = std::move(_error);
|
||||
|
||||
// TODO: is it ok to call this while holding mutex lock?
|
||||
listener.OnPlayerError();
|
||||
}
|
||||
|
||||
void
|
||||
|
||||
@@ -22,6 +22,12 @@
|
||||
|
||||
class PlayerListener {
|
||||
public:
|
||||
/**
|
||||
* A playback error has occurred and
|
||||
* PlayerControl::CheckRethrowError() will provide details.
|
||||
*/
|
||||
virtual void OnPlayerError() noexcept = 0;
|
||||
|
||||
/**
|
||||
* Must call playlist_sync().
|
||||
*/
|
||||
|
||||
@@ -575,8 +575,6 @@ Player::OpenOutput() noexcept
|
||||
|
||||
pc.SetOutputError(std::current_exception());
|
||||
|
||||
idle_add(IDLE_PLAYER);
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -1065,8 +1063,6 @@ Player::PlayNextChunk() noexcept
|
||||
|
||||
pc.LockSetOutputError(std::current_exception());
|
||||
|
||||
idle_add(IDLE_PLAYER);
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user