output/{Internal,Control}: add "noexcept"
This commit is contained in:
parent
e616be0a42
commit
3907ddbcc4
|
@ -54,25 +54,25 @@ AudioOutputControl::Configure(const ConfigBlock &block)
|
|||
}
|
||||
|
||||
const char *
|
||||
AudioOutputControl::GetName() const
|
||||
AudioOutputControl::GetName() const noexcept
|
||||
{
|
||||
return output->GetName();
|
||||
}
|
||||
|
||||
AudioOutputClient &
|
||||
AudioOutputControl::GetClient()
|
||||
AudioOutputControl::GetClient() noexcept
|
||||
{
|
||||
return *output->client;
|
||||
}
|
||||
|
||||
Mixer *
|
||||
AudioOutputControl::GetMixer() const
|
||||
AudioOutputControl::GetMixer() const noexcept
|
||||
{
|
||||
return output->mixer;
|
||||
}
|
||||
|
||||
bool
|
||||
AudioOutputControl::LockSetEnabled(bool new_value)
|
||||
AudioOutputControl::LockSetEnabled(bool new_value) noexcept
|
||||
{
|
||||
const std::lock_guard<Mutex> protect(mutex);
|
||||
|
||||
|
@ -84,20 +84,20 @@ AudioOutputControl::LockSetEnabled(bool new_value)
|
|||
}
|
||||
|
||||
bool
|
||||
AudioOutputControl::LockToggleEnabled()
|
||||
AudioOutputControl::LockToggleEnabled() noexcept
|
||||
{
|
||||
const std::lock_guard<Mutex> protect(mutex);
|
||||
return enabled = !enabled;
|
||||
}
|
||||
|
||||
bool
|
||||
AudioOutputControl::IsOpen() const
|
||||
AudioOutputControl::IsOpen() const noexcept
|
||||
{
|
||||
return output->IsOpen();
|
||||
}
|
||||
|
||||
void
|
||||
AudioOutputControl::WaitForCommand()
|
||||
AudioOutputControl::WaitForCommand() noexcept
|
||||
{
|
||||
while (!IsCommandFinished()) {
|
||||
mutex.unlock();
|
||||
|
@ -107,7 +107,7 @@ AudioOutputControl::WaitForCommand()
|
|||
}
|
||||
|
||||
void
|
||||
AudioOutputControl::CommandAsync(Command cmd)
|
||||
AudioOutputControl::CommandAsync(Command cmd) noexcept
|
||||
{
|
||||
assert(IsCommandFinished());
|
||||
|
||||
|
@ -116,14 +116,14 @@ AudioOutputControl::CommandAsync(Command cmd)
|
|||
}
|
||||
|
||||
void
|
||||
AudioOutputControl::CommandWait(Command cmd)
|
||||
AudioOutputControl::CommandWait(Command cmd) noexcept
|
||||
{
|
||||
CommandAsync(cmd);
|
||||
WaitForCommand();
|
||||
}
|
||||
|
||||
void
|
||||
AudioOutputControl::LockCommandWait(Command cmd)
|
||||
AudioOutputControl::LockCommandWait(Command cmd) noexcept
|
||||
{
|
||||
const std::lock_guard<Mutex> protect(mutex);
|
||||
CommandWait(cmd);
|
||||
|
@ -148,7 +148,7 @@ AudioOutputControl::EnableAsync()
|
|||
}
|
||||
|
||||
void
|
||||
AudioOutputControl::DisableAsync()
|
||||
AudioOutputControl::DisableAsync() noexcept
|
||||
{
|
||||
if (!thread.IsDefined()) {
|
||||
if (output->plugin.disable == nullptr)
|
||||
|
@ -177,7 +177,8 @@ AudioOutputControl::EnableDisableAsync()
|
|||
}
|
||||
|
||||
inline bool
|
||||
AudioOutputControl::Open(const AudioFormat audio_format, const MusicPipe &mp)
|
||||
AudioOutputControl::Open(const AudioFormat audio_format,
|
||||
const MusicPipe &mp) noexcept
|
||||
{
|
||||
assert(allow_play);
|
||||
assert(audio_format.IsValid());
|
||||
|
@ -215,7 +216,7 @@ AudioOutputControl::Open(const AudioFormat audio_format, const MusicPipe &mp)
|
|||
}
|
||||
|
||||
void
|
||||
AudioOutputControl::CloseWait()
|
||||
AudioOutputControl::CloseWait() noexcept
|
||||
{
|
||||
assert(allow_play);
|
||||
|
||||
|
@ -233,7 +234,7 @@ AudioOutputControl::CloseWait()
|
|||
bool
|
||||
AudioOutputControl::LockUpdate(const AudioFormat audio_format,
|
||||
const MusicPipe &mp,
|
||||
bool force)
|
||||
bool force) noexcept
|
||||
{
|
||||
const std::lock_guard<Mutex> protect(mutex);
|
||||
|
||||
|
@ -249,19 +250,19 @@ AudioOutputControl::LockUpdate(const AudioFormat audio_format,
|
|||
}
|
||||
|
||||
bool
|
||||
AudioOutputControl::LockIsChunkConsumed(const MusicChunk &chunk) const
|
||||
AudioOutputControl::LockIsChunkConsumed(const MusicChunk &chunk) const noexcept
|
||||
{
|
||||
return output->LockIsChunkConsumed(chunk);
|
||||
}
|
||||
|
||||
void
|
||||
AudioOutputControl::ClearTailChunk(const MusicChunk &chunk)
|
||||
AudioOutputControl::ClearTailChunk(const MusicChunk &chunk) noexcept
|
||||
{
|
||||
output->ClearTailChunk(chunk);
|
||||
}
|
||||
|
||||
void
|
||||
AudioOutputControl::LockPlay()
|
||||
AudioOutputControl::LockPlay() noexcept
|
||||
{
|
||||
const std::lock_guard<Mutex> protect(mutex);
|
||||
|
||||
|
@ -274,7 +275,7 @@ AudioOutputControl::LockPlay()
|
|||
}
|
||||
|
||||
void
|
||||
AudioOutputControl::LockPauseAsync()
|
||||
AudioOutputControl::LockPauseAsync() noexcept
|
||||
{
|
||||
if (output->mixer != nullptr && output->plugin.pause == nullptr)
|
||||
/* the device has no pause mode: close the mixer,
|
||||
|
@ -290,7 +291,7 @@ AudioOutputControl::LockPauseAsync()
|
|||
}
|
||||
|
||||
void
|
||||
AudioOutputControl::LockDrainAsync()
|
||||
AudioOutputControl::LockDrainAsync() noexcept
|
||||
{
|
||||
const std::lock_guard<Mutex> protect(mutex);
|
||||
|
||||
|
@ -300,7 +301,7 @@ AudioOutputControl::LockDrainAsync()
|
|||
}
|
||||
|
||||
void
|
||||
AudioOutputControl::LockCancelAsync()
|
||||
AudioOutputControl::LockCancelAsync() noexcept
|
||||
{
|
||||
const std::lock_guard<Mutex> protect(mutex);
|
||||
|
||||
|
@ -311,7 +312,7 @@ AudioOutputControl::LockCancelAsync()
|
|||
}
|
||||
|
||||
void
|
||||
AudioOutputControl::LockAllowPlay()
|
||||
AudioOutputControl::LockAllowPlay() noexcept
|
||||
{
|
||||
const std::lock_guard<Mutex> protect(mutex);
|
||||
|
||||
|
@ -321,7 +322,7 @@ AudioOutputControl::LockAllowPlay()
|
|||
}
|
||||
|
||||
void
|
||||
AudioOutputControl::LockRelease()
|
||||
AudioOutputControl::LockRelease() noexcept
|
||||
{
|
||||
if (always_on)
|
||||
LockPauseAsync();
|
||||
|
@ -330,7 +331,7 @@ AudioOutputControl::LockRelease()
|
|||
}
|
||||
|
||||
void
|
||||
AudioOutputControl::LockCloseWait()
|
||||
AudioOutputControl::LockCloseWait() noexcept
|
||||
{
|
||||
assert(!output->open || !fail_timer.IsDefined());
|
||||
|
||||
|
@ -339,13 +340,13 @@ AudioOutputControl::LockCloseWait()
|
|||
}
|
||||
|
||||
void
|
||||
AudioOutputControl::SetReplayGainMode(ReplayGainMode _mode)
|
||||
AudioOutputControl::SetReplayGainMode(ReplayGainMode _mode) noexcept
|
||||
{
|
||||
return output->SetReplayGainMode(_mode);
|
||||
}
|
||||
|
||||
void
|
||||
AudioOutputControl::StopThread()
|
||||
AudioOutputControl::StopThread() noexcept
|
||||
{
|
||||
assert(thread.IsDefined());
|
||||
assert(allow_play);
|
||||
|
@ -355,14 +356,14 @@ AudioOutputControl::StopThread()
|
|||
}
|
||||
|
||||
void
|
||||
AudioOutput::BeginDestroy()
|
||||
AudioOutput::BeginDestroy() noexcept
|
||||
{
|
||||
if (mixer != nullptr)
|
||||
mixer_auto_close(mixer);
|
||||
}
|
||||
|
||||
void
|
||||
AudioOutputControl::BeginDestroy()
|
||||
AudioOutputControl::BeginDestroy() noexcept
|
||||
{
|
||||
output->BeginDestroy();
|
||||
|
||||
|
@ -373,13 +374,13 @@ AudioOutputControl::BeginDestroy()
|
|||
}
|
||||
|
||||
void
|
||||
AudioOutput::FinishDestroy()
|
||||
AudioOutput::FinishDestroy() noexcept
|
||||
{
|
||||
audio_output_free(this);
|
||||
}
|
||||
|
||||
void
|
||||
AudioOutputControl::FinishDestroy()
|
||||
AudioOutputControl::FinishDestroy() noexcept
|
||||
{
|
||||
if (thread.IsDefined())
|
||||
thread.Join();
|
||||
|
|
|
@ -183,72 +183,72 @@ public:
|
|||
void Configure(const ConfigBlock &block);
|
||||
|
||||
gcc_pure
|
||||
const char *GetName() const;
|
||||
const char *GetName() const noexcept;
|
||||
|
||||
AudioOutputClient &GetClient();
|
||||
AudioOutputClient &GetClient() noexcept;
|
||||
|
||||
gcc_pure
|
||||
Mixer *GetMixer() const;
|
||||
Mixer *GetMixer() const noexcept;
|
||||
|
||||
/**
|
||||
* Caller must lock the mutex.
|
||||
*/
|
||||
bool IsEnabled() const {
|
||||
bool IsEnabled() const noexcept {
|
||||
return enabled;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return true if the value has been modified
|
||||
*/
|
||||
bool LockSetEnabled(bool new_value);
|
||||
bool LockSetEnabled(bool new_value) noexcept;
|
||||
|
||||
/**
|
||||
* @return the new "enabled" value
|
||||
*/
|
||||
bool LockToggleEnabled();
|
||||
bool LockToggleEnabled() noexcept;
|
||||
|
||||
gcc_pure
|
||||
bool IsOpen() const;
|
||||
bool IsOpen() const noexcept;
|
||||
|
||||
/**
|
||||
* Caller must lock the mutex.
|
||||
*/
|
||||
bool IsBusy() const {
|
||||
bool IsBusy() const noexcept {
|
||||
return IsOpen() && !IsCommandFinished();
|
||||
}
|
||||
|
||||
/**
|
||||
* Caller must lock the mutex.
|
||||
*/
|
||||
const std::exception_ptr &GetLastError() const {
|
||||
const std::exception_ptr &GetLastError() const noexcept {
|
||||
return last_error;
|
||||
}
|
||||
|
||||
void StartThread();
|
||||
void StopThread();
|
||||
void StopThread() noexcept;
|
||||
|
||||
/**
|
||||
* Caller must lock the mutex.
|
||||
*/
|
||||
bool IsCommandFinished() const {
|
||||
bool IsCommandFinished() const noexcept {
|
||||
return command == Command::NONE;
|
||||
}
|
||||
|
||||
void CommandFinished();
|
||||
void CommandFinished() noexcept;
|
||||
|
||||
/**
|
||||
* Waits for command completion.
|
||||
*
|
||||
* Caller must lock the mutex.
|
||||
*/
|
||||
void WaitForCommand();
|
||||
void WaitForCommand() noexcept;
|
||||
|
||||
/**
|
||||
* Sends a command, but does not wait for completion.
|
||||
*
|
||||
* Caller must lock the mutex.
|
||||
*/
|
||||
void CommandAsync(Command cmd);
|
||||
void CommandAsync(Command cmd) noexcept;
|
||||
|
||||
/**
|
||||
* Sends a command to the #AudioOutput object and waits for
|
||||
|
@ -256,16 +256,16 @@ public:
|
|||
*
|
||||
* Caller must lock the mutex.
|
||||
*/
|
||||
void CommandWait(Command cmd);
|
||||
void CommandWait(Command cmd) noexcept;
|
||||
|
||||
/**
|
||||
* Lock the #AudioOutput object and execute the command
|
||||
* synchronously.
|
||||
*/
|
||||
void LockCommandWait(Command cmd);
|
||||
void LockCommandWait(Command cmd) noexcept;
|
||||
|
||||
void BeginDestroy();
|
||||
void FinishDestroy();
|
||||
void BeginDestroy() noexcept;
|
||||
void FinishDestroy() noexcept;
|
||||
|
||||
/**
|
||||
* Enables the device, but don't wait for completion.
|
||||
|
@ -279,7 +279,7 @@ public:
|
|||
*
|
||||
* Caller must lock the mutex.
|
||||
*/
|
||||
void DisableAsync();
|
||||
void DisableAsync() noexcept;
|
||||
|
||||
/**
|
||||
* Attempt to enable or disable the device as specified by the
|
||||
|
@ -289,23 +289,23 @@ public:
|
|||
* Caller must lock the mutex.
|
||||
*/
|
||||
void EnableDisableAsync();
|
||||
void LockPauseAsync();
|
||||
void LockPauseAsync() noexcept;
|
||||
|
||||
void CloseWait();
|
||||
void LockCloseWait();
|
||||
void CloseWait() noexcept;
|
||||
void LockCloseWait() noexcept;
|
||||
|
||||
/**
|
||||
* Closes the audio output, but if the "always_on" flag is set, put it
|
||||
* into pause mode instead.
|
||||
*/
|
||||
void LockRelease();
|
||||
void LockRelease() noexcept;
|
||||
|
||||
void SetReplayGainMode(ReplayGainMode _mode);
|
||||
void SetReplayGainMode(ReplayGainMode _mode) noexcept;
|
||||
|
||||
/**
|
||||
* Caller must lock the mutex.
|
||||
*/
|
||||
bool Open(const AudioFormat audio_format, const MusicPipe &mp);
|
||||
bool Open(AudioFormat audio_format, const MusicPipe &mp) noexcept;
|
||||
|
||||
/**
|
||||
* Opens or closes the device, depending on the "enabled"
|
||||
|
@ -316,27 +316,27 @@ public:
|
|||
*/
|
||||
bool LockUpdate(const AudioFormat audio_format,
|
||||
const MusicPipe &mp,
|
||||
bool force);
|
||||
bool force) noexcept;
|
||||
|
||||
gcc_pure
|
||||
bool LockIsChunkConsumed(const MusicChunk &chunk) const;
|
||||
bool LockIsChunkConsumed(const MusicChunk &chunk) const noexcept;
|
||||
|
||||
void ClearTailChunk(const MusicChunk &chunk);
|
||||
void ClearTailChunk(const MusicChunk &chunk) noexcept;
|
||||
|
||||
void LockPlay();
|
||||
void LockDrainAsync();
|
||||
void LockPlay() noexcept;
|
||||
void LockDrainAsync() noexcept;
|
||||
|
||||
/**
|
||||
* Clear the "allow_play" flag and send the "CANCEL" command
|
||||
* asynchronously. To finish the operation, the caller has to
|
||||
* call LockAllowPlay().
|
||||
*/
|
||||
void LockCancelAsync();
|
||||
void LockCancelAsync() noexcept;
|
||||
|
||||
/**
|
||||
* Set the "allow_play" and signal the thread.
|
||||
*/
|
||||
void LockAllowPlay();
|
||||
void LockAllowPlay() noexcept;
|
||||
|
||||
private:
|
||||
/**
|
||||
|
@ -351,11 +351,11 @@ private:
|
|||
* @return true if playback should be continued, false if a
|
||||
* command was issued
|
||||
*/
|
||||
bool WaitForDelay();
|
||||
bool WaitForDelay() noexcept;
|
||||
|
||||
bool FillSourceOrClose();
|
||||
|
||||
bool PlayChunk();
|
||||
bool PlayChunk() noexcept;
|
||||
|
||||
/**
|
||||
* Plays all remaining chunks, until the tail of the pipe has
|
||||
|
@ -365,9 +365,9 @@ private:
|
|||
* @return true if at least one chunk has been available,
|
||||
* false if the tail of the pipe was already reached
|
||||
*/
|
||||
bool Play();
|
||||
bool Play() noexcept;
|
||||
|
||||
void Pause();
|
||||
void Pause() noexcept;
|
||||
|
||||
/**
|
||||
* The OutputThread.
|
||||
|
|
|
@ -38,7 +38,7 @@ AudioOutput::~AudioOutput()
|
|||
}
|
||||
|
||||
void
|
||||
audio_output_free(AudioOutput *ao)
|
||||
audio_output_free(AudioOutput *ao) noexcept
|
||||
{
|
||||
assert(!ao->IsOpen());
|
||||
|
||||
|
|
|
@ -163,8 +163,8 @@ public:
|
|||
MixerListener &mixer_listener,
|
||||
const ConfigBlock &block);
|
||||
|
||||
void BeginDestroy();
|
||||
void FinishDestroy();
|
||||
void BeginDestroy() noexcept;
|
||||
void FinishDestroy() noexcept;
|
||||
|
||||
const char *GetName() const {
|
||||
return name;
|
||||
|
@ -177,7 +177,7 @@ public:
|
|||
return open;
|
||||
}
|
||||
|
||||
void SetReplayGainMode(ReplayGainMode _mode) {
|
||||
void SetReplayGainMode(ReplayGainMode _mode) noexcept {
|
||||
source.SetReplayGainMode(_mode);
|
||||
}
|
||||
|
||||
|
@ -204,14 +204,14 @@ public:
|
|||
*/
|
||||
void Enable();
|
||||
|
||||
void Disable();
|
||||
void Disable() noexcept;
|
||||
|
||||
/**
|
||||
* Throws #std::runtime_error on error.
|
||||
*/
|
||||
void Open(AudioFormat audio_format, const MusicPipe &pipe);
|
||||
|
||||
void Close(bool drain);
|
||||
void Close(bool drain) noexcept;
|
||||
|
||||
private:
|
||||
/**
|
||||
|
@ -229,18 +229,18 @@ private:
|
|||
*
|
||||
* Mutex must not be locked.
|
||||
*/
|
||||
void CloseOutput(bool drain);
|
||||
void CloseOutput(bool drain) noexcept;
|
||||
|
||||
/**
|
||||
* Mutex must not be locked.
|
||||
*/
|
||||
void CloseFilter();
|
||||
void CloseFilter() noexcept;
|
||||
|
||||
public:
|
||||
void BeginPause();
|
||||
bool IteratePause();
|
||||
void BeginPause() noexcept;
|
||||
bool IteratePause() noexcept;
|
||||
|
||||
void EndPause() {
|
||||
void EndPause() noexcept{
|
||||
pause = false;
|
||||
}
|
||||
};
|
||||
|
@ -262,6 +262,6 @@ audio_output_new(EventLoop &event_loop,
|
|||
AudioOutputClient &client);
|
||||
|
||||
void
|
||||
audio_output_free(AudioOutput *ao);
|
||||
audio_output_free(AudioOutput *ao) noexcept;
|
||||
|
||||
#endif
|
||||
|
|
|
@ -32,7 +32,7 @@ ao_plugin_init(EventLoop &event_loop,
|
|||
}
|
||||
|
||||
void
|
||||
ao_plugin_finish(AudioOutput *ao)
|
||||
ao_plugin_finish(AudioOutput *ao) noexcept
|
||||
{
|
||||
ao->plugin.finish(ao);
|
||||
}
|
||||
|
@ -45,7 +45,7 @@ ao_plugin_enable(AudioOutput &ao)
|
|||
}
|
||||
|
||||
void
|
||||
ao_plugin_disable(AudioOutput &ao)
|
||||
ao_plugin_disable(AudioOutput &ao) noexcept
|
||||
{
|
||||
if (ao.plugin.disable != nullptr)
|
||||
ao.plugin.disable(&ao);
|
||||
|
@ -58,7 +58,7 @@ ao_plugin_open(AudioOutput &ao, AudioFormat &audio_format)
|
|||
}
|
||||
|
||||
void
|
||||
ao_plugin_close(AudioOutput &ao)
|
||||
ao_plugin_close(AudioOutput &ao) noexcept
|
||||
{
|
||||
ao.plugin.close(&ao);
|
||||
}
|
||||
|
@ -92,7 +92,7 @@ ao_plugin_drain(AudioOutput &ao)
|
|||
}
|
||||
|
||||
void
|
||||
ao_plugin_cancel(AudioOutput &ao)
|
||||
ao_plugin_cancel(AudioOutput &ao) noexcept
|
||||
{
|
||||
if (ao.plugin.cancel != nullptr)
|
||||
ao.plugin.cancel(&ao);
|
||||
|
|
|
@ -168,19 +168,19 @@ ao_plugin_init(EventLoop &event_loop,
|
|||
const ConfigBlock &block);
|
||||
|
||||
void
|
||||
ao_plugin_finish(AudioOutput *ao);
|
||||
ao_plugin_finish(AudioOutput *ao) noexcept;
|
||||
|
||||
void
|
||||
ao_plugin_enable(AudioOutput &ao);
|
||||
|
||||
void
|
||||
ao_plugin_disable(AudioOutput &ao);
|
||||
ao_plugin_disable(AudioOutput &ao) noexcept;
|
||||
|
||||
void
|
||||
ao_plugin_open(AudioOutput &ao, AudioFormat &audio_format);
|
||||
|
||||
void
|
||||
ao_plugin_close(AudioOutput &ao);
|
||||
ao_plugin_close(AudioOutput &ao) noexcept;
|
||||
|
||||
gcc_pure
|
||||
std::chrono::steady_clock::duration
|
||||
|
@ -196,7 +196,7 @@ void
|
|||
ao_plugin_drain(AudioOutput &ao);
|
||||
|
||||
void
|
||||
ao_plugin_cancel(AudioOutput &ao);
|
||||
ao_plugin_cancel(AudioOutput &ao) noexcept;
|
||||
|
||||
bool
|
||||
ao_plugin_pause(AudioOutput &ao);
|
||||
|
|
|
@ -119,7 +119,7 @@ class AudioOutputSource {
|
|||
ConstBuffer<uint8_t> pending_data;
|
||||
|
||||
public:
|
||||
void SetReplayGainMode(ReplayGainMode _mode) {
|
||||
void SetReplayGainMode(ReplayGainMode _mode) noexcept {
|
||||
replay_gain_mode = _mode;
|
||||
}
|
||||
|
||||
|
|
|
@ -48,7 +48,7 @@
|
|||
#include <string.h>
|
||||
|
||||
void
|
||||
AudioOutputControl::CommandFinished()
|
||||
AudioOutputControl::CommandFinished() noexcept
|
||||
{
|
||||
assert(command != Command::NONE);
|
||||
command = Command::NONE;
|
||||
|
@ -75,7 +75,7 @@ AudioOutput::Enable()
|
|||
}
|
||||
|
||||
inline void
|
||||
AudioOutput::Disable()
|
||||
AudioOutput::Disable() noexcept
|
||||
{
|
||||
if (open)
|
||||
Close(false);
|
||||
|
@ -89,7 +89,7 @@ AudioOutput::Disable()
|
|||
}
|
||||
|
||||
void
|
||||
AudioOutput::CloseFilter()
|
||||
AudioOutput::CloseFilter() noexcept
|
||||
{
|
||||
if (mixer != nullptr && mixer->IsPlugin(software_mixer_plugin))
|
||||
software_mixer_set_filter(*mixer, nullptr);
|
||||
|
@ -220,7 +220,7 @@ AudioOutputControl::InternalOpen(const AudioFormat audio_format,
|
|||
}
|
||||
|
||||
void
|
||||
AudioOutput::Close(bool drain)
|
||||
AudioOutput::Close(bool drain) noexcept
|
||||
{
|
||||
assert(open);
|
||||
|
||||
|
@ -236,7 +236,7 @@ AudioOutput::Close(bool drain)
|
|||
}
|
||||
|
||||
inline void
|
||||
AudioOutput::CloseOutput(bool drain)
|
||||
AudioOutput::CloseOutput(bool drain) noexcept
|
||||
{
|
||||
if (drain)
|
||||
ao_plugin_drain(*this);
|
||||
|
@ -253,7 +253,7 @@ AudioOutput::CloseOutput(bool drain)
|
|||
* was issued
|
||||
*/
|
||||
inline bool
|
||||
AudioOutputControl::WaitForDelay()
|
||||
AudioOutputControl::WaitForDelay() noexcept
|
||||
{
|
||||
while (true) {
|
||||
const auto delay = ao_plugin_delay(*output);
|
||||
|
@ -284,7 +284,7 @@ try {
|
|||
}
|
||||
|
||||
inline bool
|
||||
AudioOutputControl::PlayChunk()
|
||||
AudioOutputControl::PlayChunk() noexcept
|
||||
{
|
||||
if (tags) {
|
||||
const auto *tag = output->source.ReadTag();
|
||||
|
@ -340,7 +340,7 @@ AudioOutputControl::PlayChunk()
|
|||
}
|
||||
|
||||
inline bool
|
||||
AudioOutputControl::Play()
|
||||
AudioOutputControl::Play() noexcept
|
||||
{
|
||||
if (!FillSourceOrClose())
|
||||
/* no chunk available */
|
||||
|
@ -380,7 +380,7 @@ AudioOutputControl::Play()
|
|||
}
|
||||
|
||||
inline void
|
||||
AudioOutput::BeginPause()
|
||||
AudioOutput::BeginPause() noexcept
|
||||
{
|
||||
{
|
||||
const ScopeUnlock unlock(mutex);
|
||||
|
@ -391,7 +391,7 @@ AudioOutput::BeginPause()
|
|||
}
|
||||
|
||||
inline bool
|
||||
AudioOutput::IteratePause()
|
||||
AudioOutput::IteratePause() noexcept
|
||||
{
|
||||
bool success;
|
||||
|
||||
|
@ -411,7 +411,7 @@ AudioOutput::IteratePause()
|
|||
}
|
||||
|
||||
inline void
|
||||
AudioOutputControl::Pause()
|
||||
AudioOutputControl::Pause() noexcept
|
||||
{
|
||||
output->BeginPause();
|
||||
CommandFinished();
|
||||
|
|
Loading…
Reference in New Issue