Commit 3830748d authored by Max Kellermann's avatar Max Kellermann

output/alsa: clear the `period_buffer` in LockCaughtError()

The method Cancel() assumes that the `period_buffer` must be empty when `active==false`, but that is not the case when Play() fails. Of course the assertion in Cancel() is not 100% correct, but I decided to rather fix this in LockCaughtError() because the `period_buffer` should only be accessed from within the RTIO thread, and this is the only code path where `active` can be set to `false` with a non-empty `period_buffer`. Fixes #423
parent 1a43f514
ver 0.21.3 (not yet released)
* output
- alsa: fix crash bug
ver 0.21.2 (2018/11/12)
* protocol
......
......@@ -306,6 +306,8 @@ private:
}
void LockCaughtError() noexcept {
period_buffer.Clear();
const std::lock_guard<Mutex> lock(mutex);
error = std::current_exception();
active = false;
......
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