output/Internal: move enum AudioOutputCommand into the struct

This commit is contained in:
Max Kellermann 2014-12-24 22:11:57 +01:00
parent 54fc8f0e8c
commit c5409d52f5
4 changed files with 62 additions and 62 deletions

View File

@ -58,7 +58,7 @@ AudioOutput::AudioOutput(const AudioOutputPlugin &_plugin)
filter(nullptr),
replay_gain_filter(nullptr),
other_replay_gain_filter(nullptr),
command(AudioOutputCommand::NONE)
command(Command::NONE)
{
assert(plugin.finish != nullptr);
assert(plugin.open != nullptr);

View File

@ -40,32 +40,32 @@ struct config_param;
struct PlayerControl;
struct AudioOutputPlugin;
enum class AudioOutputCommand {
NONE,
ENABLE,
DISABLE,
OPEN,
/**
* This command is invoked when the input audio format
* changes.
*/
REOPEN,
CLOSE,
PAUSE,
/**
* Drains the internal (hardware) buffers of the device. This
* operation may take a while to complete.
*/
DRAIN,
CANCEL,
KILL
};
struct AudioOutput {
enum class Command {
NONE,
ENABLE,
DISABLE,
OPEN,
/**
* This command is invoked when the input audio format
* changes.
*/
REOPEN,
CLOSE,
PAUSE,
/**
* Drains the internal (hardware) buffers of the device. This
* operation may take a while to complete.
*/
DRAIN,
CANCEL,
KILL
};
/**
* The device's configured display name.
*/
@ -231,7 +231,7 @@ struct AudioOutput {
/**
* The next command to be performed by the output thread.
*/
AudioOutputCommand command;
Command command;
/**
* The music pipe which provides music chunks to be played.
@ -284,7 +284,7 @@ struct AudioOutput {
}
bool IsCommandFinished() const {
return command == AudioOutputCommand::NONE;
return command == Command::NONE;
}
/**
@ -299,7 +299,7 @@ struct AudioOutput {
*
* Caller must lock the mutex.
*/
void CommandAsync(AudioOutputCommand cmd);
void CommandAsync(Command cmd);
/**
* Sends a command to the #AudioOutput object and waits for
@ -307,13 +307,13 @@ struct AudioOutput {
*
* Caller must lock the mutex.
*/
void CommandWait(AudioOutputCommand cmd);
void CommandWait(Command cmd);
/**
* Lock the #AudioOutput object and execute the command
* synchronously.
*/
void LockCommandWait(AudioOutputCommand cmd);
void LockCommandWait(Command cmd);
/**
* Enables the device.

View File

@ -46,7 +46,7 @@ AudioOutput::WaitForCommand()
}
void
AudioOutput::CommandAsync(AudioOutputCommand cmd)
AudioOutput::CommandAsync(Command cmd)
{
assert(IsCommandFinished());
@ -55,14 +55,14 @@ AudioOutput::CommandAsync(AudioOutputCommand cmd)
}
void
AudioOutput::CommandWait(AudioOutputCommand cmd)
AudioOutput::CommandWait(Command cmd)
{
CommandAsync(cmd);
WaitForCommand();
}
void
AudioOutput::LockCommandWait(AudioOutputCommand cmd)
AudioOutput::LockCommandWait(Command cmd)
{
const ScopeLock protect(mutex);
CommandWait(cmd);
@ -92,7 +92,7 @@ AudioOutput::LockEnableWait()
StartThread();
}
LockCommandWait(AudioOutputCommand::ENABLE);
LockCommandWait(Command::ENABLE);
}
void
@ -109,7 +109,7 @@ AudioOutput::LockDisableWait()
return;
}
LockCommandWait(AudioOutputCommand::DISABLE);
LockCommandWait(Command::DISABLE);
}
inline bool
@ -134,7 +134,7 @@ AudioOutput::Open(const AudioFormat audio_format, const MusicPipe &mp)
/* we're not using audio_output_cancel() here,
because that function is asynchronous */
CommandWait(AudioOutputCommand::CANCEL);
CommandWait(Command::CANCEL);
}
return true;
@ -149,8 +149,8 @@ AudioOutput::Open(const AudioFormat audio_format, const MusicPipe &mp)
StartThread();
CommandWait(open
? AudioOutputCommand::REOPEN
: AudioOutputCommand::OPEN);
? Command::REOPEN
: Command::OPEN);
const bool open2 = open;
if (open2 && mixer != nullptr) {
@ -174,7 +174,7 @@ AudioOutput::CloseWait()
assert(!open || !fail_timer.IsDefined());
if (open)
CommandWait(AudioOutputCommand::CLOSE);
CommandWait(Command::CLOSE);
else
fail_timer.Reset();
}
@ -221,7 +221,7 @@ AudioOutput::LockPauseAsync()
assert(allow_play);
if (IsOpen())
CommandAsync(AudioOutputCommand::PAUSE);
CommandAsync(Command::PAUSE);
}
void
@ -231,7 +231,7 @@ AudioOutput::LockDrainAsync()
assert(allow_play);
if (IsOpen())
CommandAsync(AudioOutputCommand::DRAIN);
CommandAsync(Command::DRAIN);
}
void
@ -241,7 +241,7 @@ AudioOutput::LockCancelAsync()
if (IsOpen()) {
allow_play = false;
CommandAsync(AudioOutputCommand::CANCEL);
CommandAsync(Command::CANCEL);
}
}
@ -279,7 +279,7 @@ AudioOutput::StopThread()
assert(thread.IsDefined());
assert(allow_play);
LockCommandWait(AudioOutputCommand::KILL);
LockCommandWait(Command::KILL);
thread.Join();
}

View File

@ -45,8 +45,8 @@
void
AudioOutput::CommandFinished()
{
assert(command != AudioOutputCommand::NONE);
command = AudioOutputCommand::NONE;
assert(command != Command::NONE);
command = Command::NONE;
mutex.unlock();
audio_output_client_notify.Signal();
@ -342,7 +342,7 @@ AudioOutput::WaitForDelay()
(void)cond.timed_wait(mutex, delay);
if (command != AudioOutputCommand::NONE)
if (command != Command::NONE)
return false;
}
}
@ -471,7 +471,7 @@ AudioOutput::PlayChunk(const MusicChunk *chunk)
Error error;
while (!data.IsEmpty() && command == AudioOutputCommand::NONE) {
while (!data.IsEmpty() && command == Command::NONE) {
if (!WaitForDelay())
break;
@ -529,7 +529,7 @@ AudioOutput::Play()
assert(!in_playback_loop);
in_playback_loop = true;
while (chunk != nullptr && command == AudioOutputCommand::NONE) {
while (chunk != nullptr && command == Command::NONE) {
assert(!current_chunk_finished);
current_chunk = chunk;
@ -577,7 +577,7 @@ AudioOutput::Pause()
Close(false);
break;
}
} while (command == AudioOutputCommand::NONE);
} while (command == Command::NONE);
pause = false;
}
@ -594,30 +594,30 @@ AudioOutput::Task()
while (1) {
switch (command) {
case AudioOutputCommand::NONE:
case Command::NONE:
break;
case AudioOutputCommand::ENABLE:
case Command::ENABLE:
Enable();
CommandFinished();
break;
case AudioOutputCommand::DISABLE:
case Command::DISABLE:
Disable();
CommandFinished();
break;
case AudioOutputCommand::OPEN:
case Command::OPEN:
Open();
CommandFinished();
break;
case AudioOutputCommand::REOPEN:
case Command::REOPEN:
Reopen();
CommandFinished();
break;
case AudioOutputCommand::CLOSE:
case Command::CLOSE:
assert(open);
assert(pipe != nullptr);
@ -625,7 +625,7 @@ AudioOutput::Task()
CommandFinished();
break;
case AudioOutputCommand::PAUSE:
case Command::PAUSE:
if (!open) {
/* the output has failed after
audio_output_all_pause() has
@ -642,7 +642,7 @@ AudioOutput::Task()
the new command first */
continue;
case AudioOutputCommand::DRAIN:
case Command::DRAIN:
if (open) {
assert(current_chunk == nullptr);
assert(pipe->Peek() == nullptr);
@ -655,7 +655,7 @@ AudioOutput::Task()
CommandFinished();
continue;
case AudioOutputCommand::CANCEL:
case Command::CANCEL:
current_chunk = nullptr;
if (open) {
@ -667,7 +667,7 @@ AudioOutput::Task()
CommandFinished();
continue;
case AudioOutputCommand::KILL:
case Command::KILL:
current_chunk = nullptr;
CommandFinished();
mutex.unlock();
@ -679,7 +679,7 @@ AudioOutput::Task()
chunks in the pipe */
continue;
if (command == AudioOutputCommand::NONE) {
if (command == Command::NONE) {
woken_for_play = false;
cond.wait(mutex);
}
@ -696,7 +696,7 @@ AudioOutput::Task(void *arg)
void
AudioOutput::StartThread()
{
assert(command == AudioOutputCommand::NONE);
assert(command == Command::NONE);
Error error;
if (!thread.Start(Task, this, error))