Commit 1fa1790d authored by Max Kellermann's avatar Max Kellermann

output/Internal: move the "pause" flag to struct AudioOutputControl

parent dd29e6e4
......@@ -181,9 +181,9 @@ AudioOutputControl::Open(const AudioFormat audio_format,
fail_timer.Reset();
if (output->open && audio_format == request.audio_format) {
assert(request.pipe == &mp || (always_on && output->pause));
assert(request.pipe == &mp || (always_on && pause));
if (!output->pause)
if (!pause)
/* already open, already the right parameters
- nothing needs to be done */
return true;
......
......@@ -144,6 +144,12 @@ class AudioOutputControl {
bool enabled = true;
/**
* Is the device paused? i.e. the output thread is in the
* ao_pause() loop.
*/
bool pause = false;
/**
* When this flag is set, the output thread will not do any
* playback. It will wait until the flag is cleared.
*
......
......@@ -70,12 +70,6 @@ struct AudioOutput {
bool open = false;
/**
* Is the device paused? i.e. the output thread is in the
* ao_pause() loop.
*/
bool pause = false;
/**
* The configured audio format.
*/
AudioFormat config_audio_format;
......@@ -234,7 +228,6 @@ public:
bool IteratePause() noexcept;
void EndPause() noexcept{
pause = false;
}
};
......
......@@ -385,12 +385,8 @@ AudioOutputControl::InternalPlay() noexcept
inline void
AudioOutput::BeginPause() noexcept
{
{
const ScopeUnlock unlock(mutex);
ao_plugin_cancel(*this);
}
pause = true;
const ScopeUnlock unlock(mutex);
ao_plugin_cancel(*this);
}
inline bool
......@@ -417,6 +413,8 @@ inline void
AudioOutputControl::InternalPause() noexcept
{
output->BeginPause();
pause = true;
CommandFinished();
do {
......@@ -427,6 +425,7 @@ AudioOutputControl::InternalPause() noexcept
break;
} while (command == Command::NONE);
pause = false;
output->EndPause();
skip_delay = true;
......
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