output/Control: avoid sending KILL twice
This commit is contained in:
parent
cd612c4eef
commit
37f984ba74
@ -377,7 +377,9 @@ AudioOutputControl::BeginDestroy() noexcept
|
||||
{
|
||||
if (thread.IsDefined()) {
|
||||
const std::lock_guard<Mutex> protect(mutex);
|
||||
if (IsCommandFinished())
|
||||
if (!killed) {
|
||||
killed = true;
|
||||
CommandAsync(Command::KILL);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -212,6 +212,15 @@ class AudioOutputControl {
|
||||
*/
|
||||
bool skip_delay;
|
||||
|
||||
/**
|
||||
* Has Command::KILL already been sent? This field is only
|
||||
* defined if `thread` is defined. It shall avoid sending the
|
||||
* command twice.
|
||||
*
|
||||
* Protected by #mutex.
|
||||
*/
|
||||
bool killed;
|
||||
|
||||
public:
|
||||
/**
|
||||
* This mutex protects #open, #fail_timer, #pipe.
|
||||
|
@ -526,6 +526,8 @@ AudioOutputControl::StartThread()
|
||||
{
|
||||
assert(command == Command::NONE);
|
||||
|
||||
killed = false;
|
||||
|
||||
const ScopeUnlock unlock(mutex);
|
||||
thread.Start();
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user