player/Control: add "noexcept"
This commit is contained in:
parent
618704f504
commit
624e679e35
@ -32,7 +32,7 @@ PlayerControl::PlayerControl(PlayerListener &_listener,
|
||||
unsigned _buffer_chunks,
|
||||
unsigned _buffered_before_play,
|
||||
AudioFormat _configured_audio_format,
|
||||
const ReplayGainConfig &_replay_gain_config)
|
||||
const ReplayGainConfig &_replay_gain_config) noexcept
|
||||
:listener(_listener), outputs(_outputs),
|
||||
buffer_chunks(_buffer_chunks),
|
||||
buffered_before_play(_buffered_before_play),
|
||||
@ -42,14 +42,14 @@ PlayerControl::PlayerControl(PlayerListener &_listener,
|
||||
{
|
||||
}
|
||||
|
||||
PlayerControl::~PlayerControl()
|
||||
PlayerControl::~PlayerControl() noexcept
|
||||
{
|
||||
delete next_song;
|
||||
delete tagged_song;
|
||||
}
|
||||
|
||||
bool
|
||||
PlayerControl::WaitOutputConsumed(unsigned threshold)
|
||||
PlayerControl::WaitOutputConsumed(unsigned threshold) noexcept
|
||||
{
|
||||
bool result = outputs.Check() < threshold;
|
||||
if (!result && command == PlayerCommand::NONE) {
|
||||
@ -75,14 +75,14 @@ PlayerControl::Play(DetachedSong *song)
|
||||
}
|
||||
|
||||
void
|
||||
PlayerControl::LockCancel()
|
||||
PlayerControl::LockCancel() noexcept
|
||||
{
|
||||
LockSynchronousCommand(PlayerCommand::CANCEL);
|
||||
assert(next_song == nullptr);
|
||||
}
|
||||
|
||||
void
|
||||
PlayerControl::LockStop()
|
||||
PlayerControl::LockStop() noexcept
|
||||
{
|
||||
LockSynchronousCommand(PlayerCommand::CLOSE_AUDIO);
|
||||
assert(next_song == nullptr);
|
||||
@ -91,13 +91,13 @@ PlayerControl::LockStop()
|
||||
}
|
||||
|
||||
void
|
||||
PlayerControl::LockUpdateAudio()
|
||||
PlayerControl::LockUpdateAudio() noexcept
|
||||
{
|
||||
LockSynchronousCommand(PlayerCommand::UPDATE_AUDIO);
|
||||
}
|
||||
|
||||
void
|
||||
PlayerControl::Kill()
|
||||
PlayerControl::Kill() noexcept
|
||||
{
|
||||
assert(thread.IsDefined());
|
||||
|
||||
@ -108,7 +108,7 @@ PlayerControl::Kill()
|
||||
}
|
||||
|
||||
void
|
||||
PlayerControl::PauseLocked()
|
||||
PlayerControl::PauseLocked() noexcept
|
||||
{
|
||||
if (state != PlayerState::STOP) {
|
||||
SynchronousCommand(PlayerCommand::PAUSE);
|
||||
@ -117,14 +117,14 @@ PlayerControl::PauseLocked()
|
||||
}
|
||||
|
||||
void
|
||||
PlayerControl::LockPause()
|
||||
PlayerControl::LockPause() noexcept
|
||||
{
|
||||
const std::lock_guard<Mutex> protect(mutex);
|
||||
PauseLocked();
|
||||
}
|
||||
|
||||
void
|
||||
PlayerControl::LockSetPause(bool pause_flag)
|
||||
PlayerControl::LockSetPause(bool pause_flag) noexcept
|
||||
{
|
||||
const std::lock_guard<Mutex> protect(mutex);
|
||||
|
||||
@ -145,7 +145,7 @@ PlayerControl::LockSetPause(bool pause_flag)
|
||||
}
|
||||
|
||||
void
|
||||
PlayerControl::LockSetBorderPause(bool _border_pause)
|
||||
PlayerControl::LockSetBorderPause(bool _border_pause) noexcept
|
||||
{
|
||||
const std::lock_guard<Mutex> protect(mutex);
|
||||
border_pause = _border_pause;
|
||||
@ -172,7 +172,7 @@ PlayerControl::LockGetStatus() noexcept
|
||||
}
|
||||
|
||||
void
|
||||
PlayerControl::SetError(PlayerError type, std::exception_ptr &&_error)
|
||||
PlayerControl::SetError(PlayerError type, std::exception_ptr &&_error) noexcept
|
||||
{
|
||||
assert(type != PlayerError::NONE);
|
||||
assert(_error);
|
||||
@ -182,14 +182,14 @@ PlayerControl::SetError(PlayerError type, std::exception_ptr &&_error)
|
||||
}
|
||||
|
||||
void
|
||||
PlayerControl::LockClearError()
|
||||
PlayerControl::LockClearError() noexcept
|
||||
{
|
||||
const std::lock_guard<Mutex> protect(mutex);
|
||||
ClearError();
|
||||
}
|
||||
|
||||
void
|
||||
PlayerControl::LockSetTaggedSong(const DetachedSong &song)
|
||||
PlayerControl::LockSetTaggedSong(const DetachedSong &song) noexcept
|
||||
{
|
||||
const std::lock_guard<Mutex> protect(mutex);
|
||||
delete tagged_song;
|
||||
@ -197,14 +197,14 @@ PlayerControl::LockSetTaggedSong(const DetachedSong &song)
|
||||
}
|
||||
|
||||
void
|
||||
PlayerControl::ClearTaggedSong()
|
||||
PlayerControl::ClearTaggedSong() noexcept
|
||||
{
|
||||
delete tagged_song;
|
||||
tagged_song = nullptr;
|
||||
}
|
||||
|
||||
void
|
||||
PlayerControl::LockEnqueueSong(DetachedSong *song)
|
||||
PlayerControl::LockEnqueueSong(DetachedSong *song) noexcept
|
||||
{
|
||||
assert(song != nullptr);
|
||||
|
||||
@ -255,7 +255,7 @@ PlayerControl::LockSeek(DetachedSong *song, SongTime t)
|
||||
}
|
||||
|
||||
void
|
||||
PlayerControl::SetCrossFade(float _cross_fade_seconds)
|
||||
PlayerControl::SetCrossFade(float _cross_fade_seconds) noexcept
|
||||
{
|
||||
if (_cross_fade_seconds < 0)
|
||||
_cross_fade_seconds = 0;
|
||||
@ -265,7 +265,7 @@ PlayerControl::SetCrossFade(float _cross_fade_seconds)
|
||||
}
|
||||
|
||||
void
|
||||
PlayerControl::SetMixRampDb(float _mixramp_db)
|
||||
PlayerControl::SetMixRampDb(float _mixramp_db) noexcept
|
||||
{
|
||||
cross_fade.mixramp_db = _mixramp_db;
|
||||
|
||||
@ -273,7 +273,7 @@ PlayerControl::SetMixRampDb(float _mixramp_db)
|
||||
}
|
||||
|
||||
void
|
||||
PlayerControl::SetMixRampDelay(float _mixramp_delay_seconds)
|
||||
PlayerControl::SetMixRampDelay(float _mixramp_delay_seconds) noexcept
|
||||
{
|
||||
cross_fade.mixramp_delay = _mixramp_delay_seconds;
|
||||
|
||||
|
@ -194,20 +194,20 @@ struct PlayerControl final : AudioOutputClient {
|
||||
unsigned buffer_chunks,
|
||||
unsigned buffered_before_play,
|
||||
AudioFormat _configured_audio_format,
|
||||
const ReplayGainConfig &_replay_gain_config);
|
||||
~PlayerControl();
|
||||
const ReplayGainConfig &_replay_gain_config) noexcept;
|
||||
~PlayerControl() noexcept;
|
||||
|
||||
/**
|
||||
* Locks the object.
|
||||
*/
|
||||
void Lock() const {
|
||||
void Lock() const noexcept {
|
||||
mutex.lock();
|
||||
}
|
||||
|
||||
/**
|
||||
* Unlocks the object.
|
||||
*/
|
||||
void Unlock() const {
|
||||
void Unlock() const noexcept {
|
||||
mutex.unlock();
|
||||
}
|
||||
|
||||
@ -215,7 +215,7 @@ struct PlayerControl final : AudioOutputClient {
|
||||
* Signals the object. The object should be locked prior to
|
||||
* calling this function.
|
||||
*/
|
||||
void Signal() {
|
||||
void Signal() noexcept {
|
||||
cond.signal();
|
||||
}
|
||||
|
||||
@ -223,7 +223,7 @@ struct PlayerControl final : AudioOutputClient {
|
||||
* Signals the object. The object is temporarily locked by
|
||||
* this function.
|
||||
*/
|
||||
void LockSignal() {
|
||||
void LockSignal() noexcept {
|
||||
const std::lock_guard<Mutex> protect(mutex);
|
||||
Signal();
|
||||
}
|
||||
@ -233,7 +233,7 @@ struct PlayerControl final : AudioOutputClient {
|
||||
* valid in the player thread. The object must be locked
|
||||
* prior to calling this function.
|
||||
*/
|
||||
void Wait() {
|
||||
void Wait() noexcept {
|
||||
assert(thread.IsInside());
|
||||
|
||||
cond.wait(mutex);
|
||||
@ -244,7 +244,7 @@ struct PlayerControl final : AudioOutputClient {
|
||||
*
|
||||
* Caller must lock the object.
|
||||
*/
|
||||
void ClientSignal() {
|
||||
void ClientSignal() noexcept {
|
||||
assert(thread.IsInside());
|
||||
|
||||
client_cond.signal();
|
||||
@ -256,7 +256,7 @@ struct PlayerControl final : AudioOutputClient {
|
||||
*
|
||||
* Caller must lock the object.
|
||||
*/
|
||||
void ClientWait() {
|
||||
void ClientWait() noexcept {
|
||||
assert(!thread.IsInside());
|
||||
|
||||
client_cond.wait(mutex);
|
||||
@ -269,14 +269,14 @@ struct PlayerControl final : AudioOutputClient {
|
||||
* To be called from the player thread. Caller must lock the
|
||||
* object.
|
||||
*/
|
||||
void CommandFinished() {
|
||||
void CommandFinished() noexcept {
|
||||
assert(command != PlayerCommand::NONE);
|
||||
|
||||
command = PlayerCommand::NONE;
|
||||
ClientSignal();
|
||||
}
|
||||
|
||||
void LockCommandFinished() {
|
||||
void LockCommandFinished() noexcept {
|
||||
const std::lock_guard<Mutex> protect(mutex);
|
||||
CommandFinished();
|
||||
}
|
||||
@ -291,9 +291,9 @@ struct PlayerControl final : AudioOutputClient {
|
||||
* @param threshold the maximum number of chunks in the pipe
|
||||
* @return true if there are less than #threshold chunks in the pipe
|
||||
*/
|
||||
bool WaitOutputConsumed(unsigned threshold);
|
||||
bool WaitOutputConsumed(unsigned threshold) noexcept;
|
||||
|
||||
bool LockWaitOutputConsumed(unsigned threshold) {
|
||||
bool LockWaitOutputConsumed(unsigned threshold) noexcept {
|
||||
const std::lock_guard<Mutex> protect(mutex);
|
||||
return WaitOutputConsumed(threshold);
|
||||
}
|
||||
@ -305,7 +305,7 @@ private:
|
||||
* To be called from the main thread. Caller must lock the
|
||||
* object.
|
||||
*/
|
||||
void WaitCommandLocked() {
|
||||
void WaitCommandLocked() noexcept {
|
||||
while (command != PlayerCommand::NONE)
|
||||
ClientWait();
|
||||
}
|
||||
@ -349,43 +349,43 @@ public:
|
||||
/**
|
||||
* see PlayerCommand::CANCEL
|
||||
*/
|
||||
void LockCancel();
|
||||
void LockCancel() noexcept;
|
||||
|
||||
void LockSetPause(bool pause_flag);
|
||||
void LockSetPause(bool pause_flag) noexcept;
|
||||
|
||||
private:
|
||||
void PauseLocked();
|
||||
void PauseLocked() noexcept;
|
||||
|
||||
void ClearError() {
|
||||
void ClearError() noexcept {
|
||||
error_type = PlayerError::NONE;
|
||||
error = std::exception_ptr();
|
||||
}
|
||||
|
||||
public:
|
||||
void LockPause();
|
||||
void LockPause() noexcept;
|
||||
|
||||
/**
|
||||
* Set the player's #border_pause flag.
|
||||
*/
|
||||
void LockSetBorderPause(bool border_pause);
|
||||
void LockSetBorderPause(bool border_pause) noexcept;
|
||||
|
||||
bool ApplyBorderPause() {
|
||||
bool ApplyBorderPause() noexcept {
|
||||
if (border_pause)
|
||||
state = PlayerState::PAUSE;
|
||||
return border_pause;
|
||||
}
|
||||
|
||||
bool LockApplyBorderPause() {
|
||||
bool LockApplyBorderPause() noexcept {
|
||||
const std::lock_guard<Mutex> lock(mutex);
|
||||
return ApplyBorderPause();
|
||||
}
|
||||
|
||||
void Kill();
|
||||
void Kill() noexcept;
|
||||
|
||||
gcc_pure
|
||||
player_status LockGetStatus() noexcept;
|
||||
|
||||
PlayerState GetState() const {
|
||||
PlayerState GetState() const noexcept {
|
||||
return state;
|
||||
}
|
||||
|
||||
@ -396,12 +396,12 @@ public:
|
||||
*
|
||||
* @param type the error type; must not be #PlayerError::NONE
|
||||
*/
|
||||
void SetError(PlayerError type, std::exception_ptr &&_error);
|
||||
void SetError(PlayerError type, std::exception_ptr &&_error) noexcept;
|
||||
|
||||
/**
|
||||
* Set the error and set state to PlayerState::PAUSE.
|
||||
*/
|
||||
void SetOutputError(std::exception_ptr &&_error) {
|
||||
void SetOutputError(std::exception_ptr &&_error) noexcept {
|
||||
SetError(PlayerError::OUTPUT, std::move(_error));
|
||||
|
||||
/* pause: the user may resume playback as soon as an
|
||||
@ -409,7 +409,7 @@ public:
|
||||
state = PlayerState::PAUSE;
|
||||
}
|
||||
|
||||
void LockSetOutputError(std::exception_ptr &&_error) {
|
||||
void LockSetOutputError(std::exception_ptr &&_error) noexcept {
|
||||
const std::lock_guard<Mutex> lock(mutex);
|
||||
SetOutputError(std::move(_error));
|
||||
}
|
||||
@ -433,9 +433,9 @@ public:
|
||||
CheckRethrowError();
|
||||
}
|
||||
|
||||
void LockClearError();
|
||||
void LockClearError() noexcept;
|
||||
|
||||
PlayerError GetErrorType() const {
|
||||
PlayerError GetErrorType() const noexcept {
|
||||
return error_type;
|
||||
}
|
||||
|
||||
@ -443,16 +443,16 @@ public:
|
||||
* Set the #tagged_song attribute to a newly allocated copy of
|
||||
* the given #DetachedSong. Locks and unlocks the object.
|
||||
*/
|
||||
void LockSetTaggedSong(const DetachedSong &song);
|
||||
void LockSetTaggedSong(const DetachedSong &song) noexcept;
|
||||
|
||||
void ClearTaggedSong();
|
||||
void ClearTaggedSong() noexcept;
|
||||
|
||||
/**
|
||||
* Read and clear the #tagged_song attribute.
|
||||
*
|
||||
* Caller must lock the object.
|
||||
*/
|
||||
DetachedSong *ReadTaggedSong() {
|
||||
DetachedSong *ReadTaggedSong() noexcept {
|
||||
DetachedSong *result = tagged_song;
|
||||
tagged_song = nullptr;
|
||||
return result;
|
||||
@ -461,17 +461,17 @@ public:
|
||||
/**
|
||||
* Like ReadTaggedSong(), but locks and unlocks the object.
|
||||
*/
|
||||
DetachedSong *LockReadTaggedSong() {
|
||||
DetachedSong *LockReadTaggedSong() noexcept {
|
||||
const std::lock_guard<Mutex> protect(mutex);
|
||||
return ReadTaggedSong();
|
||||
}
|
||||
|
||||
void LockStop();
|
||||
void LockStop() noexcept;
|
||||
|
||||
void LockUpdateAudio();
|
||||
void LockUpdateAudio() noexcept;
|
||||
|
||||
private:
|
||||
void EnqueueSongLocked(DetachedSong *song) {
|
||||
void EnqueueSongLocked(DetachedSong *song) noexcept {
|
||||
assert(song != nullptr);
|
||||
assert(next_song == nullptr);
|
||||
|
||||
@ -490,7 +490,7 @@ public:
|
||||
* @param song the song to be queued; the given instance will be owned
|
||||
* and freed by the player
|
||||
*/
|
||||
void LockEnqueueSong(DetachedSong *song);
|
||||
void LockEnqueueSong(DetachedSong *song) noexcept;
|
||||
|
||||
/**
|
||||
* Makes the player thread seek the specified song to a position.
|
||||
@ -502,30 +502,30 @@ public:
|
||||
*/
|
||||
void LockSeek(DetachedSong *song, SongTime t);
|
||||
|
||||
void SetCrossFade(float cross_fade_seconds);
|
||||
void SetCrossFade(float cross_fade_seconds) noexcept;
|
||||
|
||||
float GetCrossFade() const {
|
||||
float GetCrossFade() const noexcept {
|
||||
return cross_fade.duration;
|
||||
}
|
||||
|
||||
void SetMixRampDb(float mixramp_db);
|
||||
void SetMixRampDb(float mixramp_db) noexcept;
|
||||
|
||||
float GetMixRampDb() const {
|
||||
float GetMixRampDb() const noexcept {
|
||||
return cross_fade.mixramp_db;
|
||||
}
|
||||
|
||||
void SetMixRampDelay(float mixramp_delay_seconds);
|
||||
void SetMixRampDelay(float mixramp_delay_seconds) noexcept;
|
||||
|
||||
float GetMixRampDelay() const {
|
||||
float GetMixRampDelay() const noexcept {
|
||||
return cross_fade.mixramp_delay;
|
||||
}
|
||||
|
||||
void LockSetReplayGainMode(ReplayGainMode _mode) {
|
||||
void LockSetReplayGainMode(ReplayGainMode _mode) noexcept {
|
||||
const std::lock_guard<Mutex> protect(mutex);
|
||||
replay_gain_mode = _mode;
|
||||
}
|
||||
|
||||
double GetTotalPlayTime() const {
|
||||
double GetTotalPlayTime() const noexcept {
|
||||
return total_play_time;
|
||||
}
|
||||
|
||||
@ -539,7 +539,7 @@ public:
|
||||
}
|
||||
|
||||
private:
|
||||
void RunThread();
|
||||
void RunThread() noexcept;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
@ -1146,7 +1146,7 @@ do_play(PlayerControl &pc, DecoderControl &dc,
|
||||
}
|
||||
|
||||
void
|
||||
PlayerControl::RunThread()
|
||||
PlayerControl::RunThread() noexcept
|
||||
{
|
||||
SetThreadName("player");
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user