Commit baa2bc0c authored by Max Kellermann's avatar Max Kellermann

player/Control: add method LockSetOutputError()

parent 7e1b5348
...@@ -370,6 +370,22 @@ public: ...@@ -370,6 +370,22 @@ public:
void SetError(PlayerError type, std::exception_ptr &&_error); void SetError(PlayerError type, std::exception_ptr &&_error);
/** /**
* Set the error and set state to PlayerState::PAUSE.
*/
void SetOutputError(std::exception_ptr &&_error) {
SetError(PlayerError::OUTPUT, std::move(_error));
/* pause: the user may resume playback as soon as an
audio output becomes available */
state = PlayerState::PAUSE;
}
void LockSetOutputError(std::exception_ptr &&_error) {
const ScopeLock lock(mutex);
SetOutputError(std::move(_error));
}
/**
* Checks whether an error has occurred, and if so, rethrows * Checks whether an error has occurred, and if so, rethrows
* it. * it.
* *
......
...@@ -461,10 +461,7 @@ Player::OpenOutput() ...@@ -461,10 +461,7 @@ Player::OpenOutput()
audio output becomes available */ audio output becomes available */
paused = true; paused = true;
pc.Lock(); pc.LockSetOutputError(std::current_exception());
pc.SetError(PlayerError::OUTPUT, std::current_exception());
pc.state = PlayerState::PAUSE;
pc.Unlock();
idle_add(IDLE_PLAYER); idle_add(IDLE_PLAYER);
...@@ -911,16 +908,11 @@ Player::PlayNextChunk() ...@@ -911,16 +908,11 @@ Player::PlayNextChunk()
buffer.Return(chunk); buffer.Return(chunk);
pc.Lock();
pc.SetError(PlayerError::OUTPUT, std::current_exception());
/* pause: the user may resume playback as soon as an /* pause: the user may resume playback as soon as an
audio output becomes available */ audio output becomes available */
pc.state = PlayerState::PAUSE;
paused = true; paused = true;
pc.Unlock(); pc.LockSetOutputError(std::current_exception());
idle_add(IDLE_PLAYER); idle_add(IDLE_PLAYER);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment