Commit 2e182e84 authored by Max Kellermann's avatar Max Kellermann

thread/Mutex: remove ScopeLock, use std::lock_guard directly

parent a4202165
...@@ -72,7 +72,7 @@ io_thread_start() ...@@ -72,7 +72,7 @@ io_thread_start()
assert(io.loop != nullptr); assert(io.loop != nullptr);
assert(!io.thread.IsDefined()); assert(!io.thread.IsDefined());
const ScopeLock protect(io.mutex); const std::lock_guard<Mutex> protect(io.mutex);
io.thread.Start(io_thread_func, nullptr); io.thread.Start(io_thread_func, nullptr);
} }
......
...@@ -30,7 +30,7 @@ MusicBuffer::MusicBuffer(unsigned num_chunks) ...@@ -30,7 +30,7 @@ MusicBuffer::MusicBuffer(unsigned num_chunks)
MusicChunk * MusicChunk *
MusicBuffer::Allocate() MusicBuffer::Allocate()
{ {
const ScopeLock protect(mutex); const std::lock_guard<Mutex> protect(mutex);
return buffer.Allocate(); return buffer.Allocate();
} }
...@@ -39,7 +39,7 @@ MusicBuffer::Return(MusicChunk *chunk) ...@@ -39,7 +39,7 @@ MusicBuffer::Return(MusicChunk *chunk)
{ {
assert(chunk != nullptr); assert(chunk != nullptr);
const ScopeLock protect(mutex); const std::lock_guard<Mutex> protect(mutex);
if (chunk->other != nullptr) { if (chunk->other != nullptr) {
assert(chunk->other->other == nullptr); assert(chunk->other->other == nullptr);
......
...@@ -27,7 +27,7 @@ ...@@ -27,7 +27,7 @@
bool bool
MusicPipe::Contains(const MusicChunk *chunk) const MusicPipe::Contains(const MusicChunk *chunk) const
{ {
const ScopeLock protect(mutex); const std::lock_guard<Mutex> protect(mutex);
for (const MusicChunk *i = head; i != nullptr; i = i->next) for (const MusicChunk *i = head; i != nullptr; i = i->next)
if (i == chunk) if (i == chunk)
...@@ -41,7 +41,7 @@ MusicPipe::Contains(const MusicChunk *chunk) const ...@@ -41,7 +41,7 @@ MusicPipe::Contains(const MusicChunk *chunk) const
MusicChunk * MusicChunk *
MusicPipe::Shift() MusicPipe::Shift()
{ {
const ScopeLock protect(mutex); const std::lock_guard<Mutex> protect(mutex);
MusicChunk *chunk = head; MusicChunk *chunk = head;
if (chunk != nullptr) { if (chunk != nullptr) {
...@@ -87,7 +87,7 @@ MusicPipe::Push(MusicChunk *chunk) ...@@ -87,7 +87,7 @@ MusicPipe::Push(MusicChunk *chunk)
assert(!chunk->IsEmpty()); assert(!chunk->IsEmpty());
assert(chunk->length == 0 || chunk->audio_format.IsValid()); assert(chunk->length == 0 || chunk->audio_format.IsValid());
const ScopeLock protect(mutex); const std::lock_guard<Mutex> protect(mutex);
assert(size > 0 || !audio_format.IsDefined()); assert(size > 0 || !audio_format.IsDefined());
assert(!audio_format.IsDefined() || assert(!audio_format.IsDefined() ||
......
...@@ -37,7 +37,7 @@ UpdateRemoveService::RunDeferred() ...@@ -37,7 +37,7 @@ UpdateRemoveService::RunDeferred()
std::forward_list<std::string> copy; std::forward_list<std::string> copy;
{ {
const ScopeLock protect(mutex); const std::lock_guard<Mutex> protect(mutex);
std::swap(uris, copy); std::swap(uris, copy);
} }
...@@ -56,7 +56,7 @@ UpdateRemoveService::Remove(std::string &&uri) ...@@ -56,7 +56,7 @@ UpdateRemoveService::Remove(std::string &&uri)
bool was_empty; bool was_empty;
{ {
const ScopeLock protect(mutex); const std::lock_guard<Mutex> protect(mutex);
was_empty = uris.empty(); was_empty = uris.empty();
uris.emplace_front(std::move(uri)); uris.emplace_front(std::move(uri));
} }
......
...@@ -88,7 +88,7 @@ need_chunks(DecoderControl &dc) ...@@ -88,7 +88,7 @@ need_chunks(DecoderControl &dc)
static DecoderCommand static DecoderCommand
LockNeedChunks(DecoderControl &dc) LockNeedChunks(DecoderControl &dc)
{ {
const ScopeLock protect(dc.mutex); const std::lock_guard<Mutex> protect(dc.mutex);
return need_chunks(dc); return need_chunks(dc);
} }
...@@ -130,7 +130,7 @@ DecoderBridge::FlushChunk() ...@@ -130,7 +130,7 @@ DecoderBridge::FlushChunk()
else else
dc.pipe->Push(chunk); dc.pipe->Push(chunk);
const ScopeLock protect(dc.mutex); const std::lock_guard<Mutex> protect(dc.mutex);
if (dc.client_is_waiting) if (dc.client_is_waiting)
dc.client_cond.signal(); dc.client_cond.signal();
} }
...@@ -193,7 +193,7 @@ DecoderBridge::GetVirtualCommand() ...@@ -193,7 +193,7 @@ DecoderBridge::GetVirtualCommand()
DecoderCommand DecoderCommand
DecoderBridge::LockGetVirtualCommand() DecoderBridge::LockGetVirtualCommand()
{ {
const ScopeLock protect(dc.mutex); const std::lock_guard<Mutex> protect(dc.mutex);
return GetVirtualCommand(); return GetVirtualCommand();
} }
...@@ -258,7 +258,7 @@ DecoderBridge::Ready(const AudioFormat audio_format, ...@@ -258,7 +258,7 @@ DecoderBridge::Ready(const AudioFormat audio_format,
seekable ? "true" : "false"); seekable ? "true" : "false");
{ {
const ScopeLock protect(dc.mutex); const std::lock_guard<Mutex> protect(dc.mutex);
dc.SetReady(audio_format, seekable, duration); dc.SetReady(audio_format, seekable, duration);
} }
...@@ -287,7 +287,7 @@ DecoderBridge::GetCommand() ...@@ -287,7 +287,7 @@ DecoderBridge::GetCommand()
void void
DecoderBridge::CommandFinished() DecoderBridge::CommandFinished()
{ {
const ScopeLock protect(dc.mutex); const std::lock_guard<Mutex> protect(dc.mutex);
assert(dc.command != DecoderCommand::NONE || initial_seek_running); assert(dc.command != DecoderCommand::NONE || initial_seek_running);
assert(dc.command != DecoderCommand::SEEK || assert(dc.command != DecoderCommand::SEEK ||
...@@ -376,7 +376,7 @@ DecoderBridge::OpenUri(const char *uri) ...@@ -376,7 +376,7 @@ DecoderBridge::OpenUri(const char *uri)
auto is = InputStream::Open(uri, mutex, cond); auto is = InputStream::Open(uri, mutex, cond);
const ScopeLock lock(mutex); const std::lock_guard<Mutex> lock(mutex);
while (true) { while (true) {
is->Update(); is->Update();
if (is->IsReady()) if (is->IsReady())
...@@ -399,7 +399,7 @@ try { ...@@ -399,7 +399,7 @@ try {
if (length == 0) if (length == 0)
return 0; return 0;
ScopeLock lock(is.mutex); std::lock_guard<Mutex> lock(is.mutex);
while (true) { while (true) {
if (CheckCancelRead()) if (CheckCancelRead())
......
...@@ -111,7 +111,7 @@ DecoderControl::Start(DetachedSong *_song, ...@@ -111,7 +111,7 @@ DecoderControl::Start(DetachedSong *_song,
void void
DecoderControl::Stop() DecoderControl::Stop()
{ {
const ScopeLock protect(mutex); const std::lock_guard<Mutex> protect(mutex);
if (command != DecoderCommand::NONE) if (command != DecoderCommand::NONE)
/* Attempt to cancel the current command. If it's too /* Attempt to cancel the current command. If it's too
......
...@@ -228,7 +228,7 @@ struct DecoderControl { ...@@ -228,7 +228,7 @@ struct DecoderControl {
gcc_pure gcc_pure
bool LockIsIdle() const { bool LockIsIdle() const {
const ScopeLock protect(mutex); const std::lock_guard<Mutex> protect(mutex);
return IsIdle(); return IsIdle();
} }
...@@ -238,7 +238,7 @@ struct DecoderControl { ...@@ -238,7 +238,7 @@ struct DecoderControl {
gcc_pure gcc_pure
bool LockIsStarting() const { bool LockIsStarting() const {
const ScopeLock protect(mutex); const std::lock_guard<Mutex> protect(mutex);
return IsStarting(); return IsStarting();
} }
...@@ -250,7 +250,7 @@ struct DecoderControl { ...@@ -250,7 +250,7 @@ struct DecoderControl {
gcc_pure gcc_pure
bool LockHasFailed() const { bool LockHasFailed() const {
const ScopeLock protect(mutex); const std::lock_guard<Mutex> protect(mutex);
return HasFailed(); return HasFailed();
} }
...@@ -281,7 +281,7 @@ struct DecoderControl { ...@@ -281,7 +281,7 @@ struct DecoderControl {
* Like CheckRethrowError(), but locks and unlocks the object. * Like CheckRethrowError(), but locks and unlocks the object.
*/ */
void LockCheckRethrowError() const { void LockCheckRethrowError() const {
const ScopeLock protect(mutex); const std::lock_guard<Mutex> protect(mutex);
CheckRethrowError(); CheckRethrowError();
} }
...@@ -309,7 +309,7 @@ struct DecoderControl { ...@@ -309,7 +309,7 @@ struct DecoderControl {
gcc_pure gcc_pure
bool LockIsCurrentSong(const DetachedSong &_song) const { bool LockIsCurrentSong(const DetachedSong &_song) const {
const ScopeLock protect(mutex); const std::lock_guard<Mutex> protect(mutex);
return IsCurrentSong(_song); return IsCurrentSong(_song);
} }
...@@ -346,13 +346,13 @@ private: ...@@ -346,13 +346,13 @@ private:
* object. * object.
*/ */
void LockSynchronousCommand(DecoderCommand cmd) { void LockSynchronousCommand(DecoderCommand cmd) {
const ScopeLock protect(mutex); const std::lock_guard<Mutex> protect(mutex);
ClearError(); ClearError();
SynchronousCommandLocked(cmd); SynchronousCommandLocked(cmd);
} }
void LockAsynchronousCommand(DecoderCommand cmd) { void LockAsynchronousCommand(DecoderCommand cmd) {
const ScopeLock protect(mutex); const std::lock_guard<Mutex> protect(mutex);
command = cmd; command = cmd;
Signal(); Signal();
} }
......
...@@ -61,7 +61,7 @@ decoder_input_stream_open(DecoderControl &dc, const char *uri) ...@@ -61,7 +61,7 @@ decoder_input_stream_open(DecoderControl &dc, const char *uri)
/* wait for the input stream to become ready; its metadata /* wait for the input stream to become ready; its metadata
will be available then */ will be available then */
const ScopeLock protect(dc.mutex); const std::lock_guard<Mutex> protect(dc.mutex);
is->Update(); is->Update();
while (!is->IsReady()) { while (!is->IsReady()) {
...@@ -264,7 +264,7 @@ static void ...@@ -264,7 +264,7 @@ static void
MaybeLoadReplayGain(DecoderBridge &bridge, InputStream &is) MaybeLoadReplayGain(DecoderBridge &bridge, InputStream &is)
{ {
{ {
const ScopeLock protect(bridge.dc.mutex); const std::lock_guard<Mutex> protect(bridge.dc.mutex);
if (bridge.dc.replay_gain_mode == ReplayGainMode::OFF) if (bridge.dc.replay_gain_mode == ReplayGainMode::OFF)
/* ReplayGain is disabled */ /* ReplayGain is disabled */
return; return;
...@@ -288,7 +288,7 @@ decoder_run_stream(DecoderBridge &bridge, const char *uri) ...@@ -288,7 +288,7 @@ decoder_run_stream(DecoderBridge &bridge, const char *uri)
MaybeLoadReplayGain(bridge, *input_stream); MaybeLoadReplayGain(bridge, *input_stream);
const ScopeLock protect(dc.mutex); const std::lock_guard<Mutex> protect(dc.mutex);
bool tried = false; bool tried = false;
return dc.command == DecoderCommand::STOP || return dc.command == DecoderCommand::STOP ||
...@@ -318,10 +318,10 @@ TryDecoderFile(DecoderBridge &bridge, Path path_fs, const char *suffix, ...@@ -318,10 +318,10 @@ TryDecoderFile(DecoderBridge &bridge, Path path_fs, const char *suffix,
DecoderControl &dc = bridge.dc; DecoderControl &dc = bridge.dc;
if (plugin.file_decode != nullptr) { if (plugin.file_decode != nullptr) {
const ScopeLock protect(dc.mutex); const std::lock_guard<Mutex> protect(dc.mutex);
return decoder_file_decode(plugin, bridge, path_fs); return decoder_file_decode(plugin, bridge, path_fs);
} else if (plugin.stream_decode != nullptr) { } else if (plugin.stream_decode != nullptr) {
const ScopeLock protect(dc.mutex); const std::lock_guard<Mutex> protect(dc.mutex);
return decoder_stream_decode(plugin, bridge, input_stream); return decoder_stream_decode(plugin, bridge, input_stream);
} else } else
return false; return false;
...@@ -344,7 +344,7 @@ TryContainerDecoder(DecoderBridge &bridge, Path path_fs, const char *suffix, ...@@ -344,7 +344,7 @@ TryContainerDecoder(DecoderBridge &bridge, Path path_fs, const char *suffix,
bridge.error = nullptr; bridge.error = nullptr;
DecoderControl &dc = bridge.dc; DecoderControl &dc = bridge.dc;
const ScopeLock protect(dc.mutex); const std::lock_guard<Mutex> protect(dc.mutex);
return decoder_file_decode(plugin, bridge, path_fs); return decoder_file_decode(plugin, bridge, path_fs);
} }
...@@ -517,7 +517,7 @@ decoder_task(void *arg) ...@@ -517,7 +517,7 @@ decoder_task(void *arg)
SetThreadName("decoder"); SetThreadName("decoder");
const ScopeLock protect(dc.mutex); const std::lock_guard<Mutex> protect(dc.mutex);
do { do {
assert(dc.state == DecoderState::STOP || assert(dc.state == DecoderState::STOP ||
......
...@@ -254,7 +254,7 @@ EventLoop::AddDeferred(DeferredMonitor &d) ...@@ -254,7 +254,7 @@ EventLoop::AddDeferred(DeferredMonitor &d)
void void
EventLoop::RemoveDeferred(DeferredMonitor &d) EventLoop::RemoveDeferred(DeferredMonitor &d)
{ {
const ScopeLock protect(mutex); const std::lock_guard<Mutex> protect(mutex);
if (!d.pending) { if (!d.pending) {
assert(std::find(deferred.begin(), assert(std::find(deferred.begin(),
......
...@@ -240,7 +240,7 @@ AsyncInputStream::AppendToBuffer(const void *data, size_t append_size) ...@@ -240,7 +240,7 @@ AsyncInputStream::AppendToBuffer(const void *data, size_t append_size)
void void
AsyncInputStream::DeferredResume() AsyncInputStream::DeferredResume()
{ {
const ScopeLock protect(mutex); const std::lock_guard<Mutex> protect(mutex);
try { try {
Resume(); Resume();
...@@ -253,7 +253,7 @@ AsyncInputStream::DeferredResume() ...@@ -253,7 +253,7 @@ AsyncInputStream::DeferredResume()
void void
AsyncInputStream::DeferredSeek() AsyncInputStream::DeferredSeek()
{ {
const ScopeLock protect(mutex); const std::lock_guard<Mutex> protect(mutex);
if (seek_state != SeekState::SCHEDULED) if (seek_state != SeekState::SCHEDULED)
return; return;
......
...@@ -64,7 +64,7 @@ InputStream::WaitReady() ...@@ -64,7 +64,7 @@ InputStream::WaitReady()
void void
InputStream::LockWaitReady() InputStream::LockWaitReady()
{ {
const ScopeLock protect(mutex); const std::lock_guard<Mutex> protect(mutex);
WaitReady(); WaitReady();
} }
...@@ -96,14 +96,14 @@ InputStream::Seek(gcc_unused offset_type new_offset) ...@@ -96,14 +96,14 @@ InputStream::Seek(gcc_unused offset_type new_offset)
void void
InputStream::LockSeek(offset_type _offset) InputStream::LockSeek(offset_type _offset)
{ {
const ScopeLock protect(mutex); const std::lock_guard<Mutex> protect(mutex);
Seek(_offset); Seek(_offset);
} }
void void
InputStream::LockSkip(offset_type _offset) InputStream::LockSkip(offset_type _offset)
{ {
const ScopeLock protect(mutex); const std::lock_guard<Mutex> protect(mutex);
Skip(_offset); Skip(_offset);
} }
...@@ -116,7 +116,7 @@ InputStream::ReadTag() ...@@ -116,7 +116,7 @@ InputStream::ReadTag()
Tag * Tag *
InputStream::LockReadTag() InputStream::LockReadTag()
{ {
const ScopeLock protect(mutex); const std::lock_guard<Mutex> protect(mutex);
return ReadTag(); return ReadTag();
} }
...@@ -135,7 +135,7 @@ InputStream::LockRead(void *ptr, size_t _size) ...@@ -135,7 +135,7 @@ InputStream::LockRead(void *ptr, size_t _size)
#endif #endif
assert(_size > 0); assert(_size > 0);
const ScopeLock protect(mutex); const std::lock_guard<Mutex> protect(mutex);
return Read(ptr, _size); return Read(ptr, _size);
} }
...@@ -164,13 +164,13 @@ InputStream::LockReadFull(void *ptr, size_t _size) ...@@ -164,13 +164,13 @@ InputStream::LockReadFull(void *ptr, size_t _size)
#endif #endif
assert(_size > 0); assert(_size > 0);
const ScopeLock protect(mutex); const std::lock_guard<Mutex> protect(mutex);
ReadFull(ptr, _size); ReadFull(ptr, _size);
} }
bool bool
InputStream::LockIsEOF() InputStream::LockIsEOF()
{ {
const ScopeLock protect(mutex); const std::lock_guard<Mutex> protect(mutex);
return IsEOF(); return IsEOF();
} }
...@@ -59,7 +59,7 @@ InputStream::OpenReady(const char *uri, ...@@ -59,7 +59,7 @@ InputStream::OpenReady(const char *uri,
auto is = Open(uri, mutex, cond); auto is = Open(uri, mutex, cond);
{ {
const ScopeLock protect(mutex); const std::lock_guard<Mutex> protect(mutex);
is->WaitReady(); is->WaitReady();
is->Check(); is->Check();
} }
......
...@@ -29,7 +29,7 @@ ...@@ -29,7 +29,7 @@
ThreadInputStream::~ThreadInputStream() ThreadInputStream::~ThreadInputStream()
{ {
{ {
const ScopeLock lock(mutex); const std::lock_guard<Mutex> lock(mutex);
close = true; close = true;
wake_cond.signal(); wake_cond.signal();
} }
...@@ -62,7 +62,7 @@ ThreadInputStream::ThreadFunc() ...@@ -62,7 +62,7 @@ ThreadInputStream::ThreadFunc()
{ {
FormatThreadName("input:%s", plugin); FormatThreadName("input:%s", plugin);
const ScopeLock lock(mutex); const std::lock_guard<Mutex> lock(mutex);
try { try {
Open(); Open();
......
...@@ -192,7 +192,7 @@ AlsaInputStream::PrepareSockets() ...@@ -192,7 +192,7 @@ AlsaInputStream::PrepareSockets()
void void
AlsaInputStream::DispatchSockets() AlsaInputStream::DispatchSockets()
{ {
const ScopeLock protect(mutex); const std::lock_guard<Mutex> protect(mutex);
auto w = PrepareWriteBuffer(); auto w = PrepareWriteBuffer();
const snd_pcm_uframes_t w_frames = w.size / frame_size; const snd_pcm_uframes_t w_frames = w.size / frame_size;
......
...@@ -429,7 +429,7 @@ CurlInputStream::RequestDone(CURLcode result, long status) ...@@ -429,7 +429,7 @@ CurlInputStream::RequestDone(CURLcode result, long status)
FreeEasy(); FreeEasy();
AsyncInputStream::SetClosed(); AsyncInputStream::SetClosed();
const ScopeLock protect(mutex); const std::lock_guard<Mutex> protect(mutex);
if (result != CURLE_OK) { if (result != CURLE_OK) {
postponed_exception = std::make_exception_ptr(FormatRuntimeError("curl failed: %s", postponed_exception = std::make_exception_ptr(FormatRuntimeError("curl failed: %s",
...@@ -693,7 +693,7 @@ CurlInputStream::DataReceived(const void *ptr, size_t received_size) ...@@ -693,7 +693,7 @@ CurlInputStream::DataReceived(const void *ptr, size_t received_size)
{ {
assert(received_size > 0); assert(received_size > 0);
const ScopeLock protect(mutex); const std::lock_guard<Mutex> protect(mutex);
if (IsSeekPending()) if (IsSeekPending())
SeekDone(); SeekDone();
......
...@@ -142,7 +142,7 @@ NfsInputStream::DoSeek(offset_type new_offset) ...@@ -142,7 +142,7 @@ NfsInputStream::DoSeek(offset_type new_offset)
void void
NfsInputStream::OnNfsFileOpen(uint64_t _size) NfsInputStream::OnNfsFileOpen(uint64_t _size)
{ {
const ScopeLock protect(mutex); const std::lock_guard<Mutex> protect(mutex);
if (reconnecting) { if (reconnecting) {
/* reconnect has succeeded */ /* reconnect has succeeded */
...@@ -162,7 +162,7 @@ NfsInputStream::OnNfsFileOpen(uint64_t _size) ...@@ -162,7 +162,7 @@ NfsInputStream::OnNfsFileOpen(uint64_t _size)
void void
NfsInputStream::OnNfsFileRead(const void *data, size_t data_size) NfsInputStream::OnNfsFileRead(const void *data, size_t data_size)
{ {
const ScopeLock protect(mutex); const std::lock_guard<Mutex> protect(mutex);
assert(!IsBufferFull()); assert(!IsBufferFull());
assert(IsBufferFull() == (GetBufferSpace() == 0)); assert(IsBufferFull() == (GetBufferSpace() == 0));
AppendToBuffer(data, data_size); AppendToBuffer(data, data_size);
...@@ -175,7 +175,7 @@ NfsInputStream::OnNfsFileRead(const void *data, size_t data_size) ...@@ -175,7 +175,7 @@ NfsInputStream::OnNfsFileRead(const void *data, size_t data_size)
void void
NfsInputStream::OnNfsFileError(std::exception_ptr &&e) NfsInputStream::OnNfsFileError(std::exception_ptr &&e)
{ {
const ScopeLock protect(mutex); const std::lock_guard<Mutex> protect(mutex);
if (IsPaused()) { if (IsPaused()) {
/* while we're paused, don't report this error to the /* while we're paused, don't report this error to the
......
...@@ -90,7 +90,7 @@ input_smbclient_open(const char *uri, ...@@ -90,7 +90,7 @@ input_smbclient_open(const char *uri,
if (!StringStartsWith(uri, "smb://")) if (!StringStartsWith(uri, "smb://"))
return nullptr; return nullptr;
const ScopeLock protect(smbclient_mutex); const std::lock_guard<Mutex> protect(smbclient_mutex);
SMBCCTX *ctx = smbc_new_context(); SMBCCTX *ctx = smbc_new_context();
if (ctx == nullptr) if (ctx == nullptr)
......
...@@ -105,7 +105,7 @@ AllocatedString<char> ...@@ -105,7 +105,7 @@ AllocatedString<char>
IcuConverter::ToUTF8(const char *s) const IcuConverter::ToUTF8(const char *s) const
{ {
#ifdef HAVE_ICU #ifdef HAVE_ICU
const ScopeLock protect(mutex); const std::lock_guard<Mutex> protect(mutex);
ucnv_resetToUnicode(converter); ucnv_resetToUnicode(converter);
...@@ -133,7 +133,7 @@ AllocatedString<char> ...@@ -133,7 +133,7 @@ AllocatedString<char>
IcuConverter::FromUTF8(const char *s) const IcuConverter::FromUTF8(const char *s) const
{ {
#ifdef HAVE_ICU #ifdef HAVE_ICU
const ScopeLock protect(mutex); const std::lock_guard<Mutex> protect(mutex);
const auto u = UCharFromUTF8(s); const auto u = UCharFromUTF8(s);
......
...@@ -60,7 +60,7 @@ public: ...@@ -60,7 +60,7 @@ public:
private: private:
bool LockWaitFinished() { bool LockWaitFinished() {
const ScopeLock protect(mutex); const std::lock_guard<Mutex> protect(mutex);
while (!finished) while (!finished)
if (!cond.timed_wait(mutex, timeout)) if (!cond.timed_wait(mutex, timeout))
return false; return false;
...@@ -73,7 +73,7 @@ private: ...@@ -73,7 +73,7 @@ private:
* thread. * thread.
*/ */
void LockSetFinished() { void LockSetFinished() {
const ScopeLock protect(mutex); const std::lock_guard<Mutex> protect(mutex);
finished = true; finished = true;
cond.signal(); cond.signal();
} }
......
...@@ -43,7 +43,7 @@ mpd_smbc_get_auth_data(gcc_unused const char *srv, ...@@ -43,7 +43,7 @@ mpd_smbc_get_auth_data(gcc_unused const char *srv,
void void
SmbclientInit() SmbclientInit()
{ {
const ScopeLock protect(smbclient_mutex); const std::lock_guard<Mutex> protect(smbclient_mutex);
constexpr int debug = 0; constexpr int debug = 0;
if (smbc_init(mpd_smbc_get_auth_data, debug) < 0) if (smbc_init(mpd_smbc_get_auth_data, debug) < 0)
......
...@@ -61,7 +61,7 @@ UpnpClientGlobalInit(UpnpClient_Handle &handle) ...@@ -61,7 +61,7 @@ UpnpClientGlobalInit(UpnpClient_Handle &handle)
UpnpGlobalInit(); UpnpGlobalInit();
try { try {
const ScopeLock protect(upnp_client_init_mutex); const std::lock_guard<Mutex> protect(upnp_client_init_mutex);
if (upnp_client_ref == 0) if (upnp_client_ref == 0)
DoInit(); DoInit();
} catch (...) { } catch (...) {
...@@ -77,7 +77,7 @@ void ...@@ -77,7 +77,7 @@ void
UpnpClientGlobalFinish() UpnpClientGlobalFinish()
{ {
{ {
const ScopeLock protect(upnp_client_init_mutex); const std::lock_guard<Mutex> protect(upnp_client_init_mutex);
assert(upnp_client_ref > 0); assert(upnp_client_ref > 0);
if (--upnp_client_ref == 0) if (--upnp_client_ref == 0)
......
...@@ -74,7 +74,7 @@ AnnounceLostUPnP(UPnPDiscoveryListener &listener, const UPnPDevice &device) ...@@ -74,7 +74,7 @@ AnnounceLostUPnP(UPnPDiscoveryListener &listener, const UPnPDevice &device)
inline void inline void
UPnPDeviceDirectory::LockAdd(ContentDirectoryDescriptor &&d) UPnPDeviceDirectory::LockAdd(ContentDirectoryDescriptor &&d)
{ {
const ScopeLock protect(mutex); const std::lock_guard<Mutex> protect(mutex);
for (auto &i : directories) { for (auto &i : directories) {
if (i.id == d.id) { if (i.id == d.id) {
...@@ -92,7 +92,7 @@ UPnPDeviceDirectory::LockAdd(ContentDirectoryDescriptor &&d) ...@@ -92,7 +92,7 @@ UPnPDeviceDirectory::LockAdd(ContentDirectoryDescriptor &&d)
inline void inline void
UPnPDeviceDirectory::LockRemove(const std::string &id) UPnPDeviceDirectory::LockRemove(const std::string &id)
{ {
const ScopeLock protect(mutex); const std::lock_guard<Mutex> protect(mutex);
for (auto i = directories.begin(), end = directories.end(); for (auto i = directories.begin(), end = directories.end();
i != end; ++i) { i != end; ++i) {
...@@ -273,7 +273,7 @@ UPnPDeviceDirectory::Search() ...@@ -273,7 +273,7 @@ UPnPDeviceDirectory::Search()
std::vector<ContentDirectoryService> std::vector<ContentDirectoryService>
UPnPDeviceDirectory::GetDirectories() UPnPDeviceDirectory::GetDirectories()
{ {
const ScopeLock protect(mutex); const std::lock_guard<Mutex> protect(mutex);
ExpireDevices(); ExpireDevices();
...@@ -293,7 +293,7 @@ UPnPDeviceDirectory::GetDirectories() ...@@ -293,7 +293,7 @@ UPnPDeviceDirectory::GetDirectories()
ContentDirectoryService ContentDirectoryService
UPnPDeviceDirectory::GetServer(const char *friendly_name) UPnPDeviceDirectory::GetServer(const char *friendly_name)
{ {
const ScopeLock protect(mutex); const std::lock_guard<Mutex> protect(mutex);
ExpireDevices(); ExpireDevices();
......
...@@ -48,7 +48,7 @@ DoInit() ...@@ -48,7 +48,7 @@ DoInit()
void void
UpnpGlobalInit() UpnpGlobalInit()
{ {
const ScopeLock protect(upnp_init_mutex); const std::lock_guard<Mutex> protect(upnp_init_mutex);
if (upnp_ref == 0) if (upnp_ref == 0)
DoInit(); DoInit();
...@@ -59,7 +59,7 @@ UpnpGlobalInit() ...@@ -59,7 +59,7 @@ UpnpGlobalInit()
void void
UpnpGlobalFinish() UpnpGlobalFinish()
{ {
const ScopeLock protect(upnp_init_mutex); const std::lock_guard<Mutex> protect(upnp_init_mutex);
assert(upnp_ref > 0); assert(upnp_ref > 0);
......
...@@ -90,7 +90,7 @@ public: ...@@ -90,7 +90,7 @@ public:
*/ */
bool start(unsigned nworkers, void *(*workproc)(void *), void *arg) bool start(unsigned nworkers, void *(*workproc)(void *), void *arg)
{ {
const ScopeLock protect(mutex); const std::lock_guard<Mutex> protect(mutex);
assert(nworkers > 0); assert(nworkers > 0);
assert(!ok); assert(!ok);
...@@ -120,7 +120,7 @@ public: ...@@ -120,7 +120,7 @@ public:
template<typename U> template<typename U>
bool put(U &&u) bool put(U &&u)
{ {
const ScopeLock protect(mutex); const std::lock_guard<Mutex> protect(mutex);
queue.emplace(std::forward<U>(u)); queue.emplace(std::forward<U>(u));
...@@ -135,7 +135,7 @@ public: ...@@ -135,7 +135,7 @@ public:
*/ */
void setTerminateAndWait() void setTerminateAndWait()
{ {
const ScopeLock protect(mutex); const std::lock_guard<Mutex> protect(mutex);
// Wait for all worker threads to have called workerExit() // Wait for all worker threads to have called workerExit()
ok = false; ok = false;
...@@ -166,7 +166,7 @@ public: ...@@ -166,7 +166,7 @@ public:
*/ */
bool take(T &tp) bool take(T &tp)
{ {
const ScopeLock protect(mutex); const std::lock_guard<Mutex> protect(mutex);
if (!ok) if (!ok)
return false; return false;
...@@ -192,7 +192,7 @@ public: ...@@ -192,7 +192,7 @@ public:
*/ */
void workerExit() void workerExit()
{ {
const ScopeLock protect(mutex); const std::lock_guard<Mutex> protect(mutex);
n_workers_exited++; n_workers_exited++;
ok = false; ok = false;
......
...@@ -53,7 +53,7 @@ mixer_open(Mixer *mixer) ...@@ -53,7 +53,7 @@ mixer_open(Mixer *mixer)
{ {
assert(mixer != nullptr); assert(mixer != nullptr);
const ScopeLock protect(mixer->mutex); const std::lock_guard<Mutex> protect(mixer->mutex);
if (mixer->open) if (mixer->open)
return; return;
...@@ -83,7 +83,7 @@ mixer_close(Mixer *mixer) ...@@ -83,7 +83,7 @@ mixer_close(Mixer *mixer)
{ {
assert(mixer != nullptr); assert(mixer != nullptr);
const ScopeLock protect(mixer->mutex); const std::lock_guard<Mutex> protect(mixer->mutex);
if (mixer->open) if (mixer->open)
mixer_close_internal(mixer); mixer_close_internal(mixer);
...@@ -120,7 +120,7 @@ mixer_get_volume(Mixer *mixer) ...@@ -120,7 +120,7 @@ mixer_get_volume(Mixer *mixer)
if (mixer->plugin.global && !mixer->failed) if (mixer->plugin.global && !mixer->failed)
mixer_open(mixer); mixer_open(mixer);
const ScopeLock protect(mixer->mutex); const std::lock_guard<Mutex> protect(mixer->mutex);
if (mixer->open) { if (mixer->open) {
try { try {
...@@ -144,7 +144,7 @@ mixer_set_volume(Mixer *mixer, unsigned volume) ...@@ -144,7 +144,7 @@ mixer_set_volume(Mixer *mixer, unsigned volume)
if (mixer->plugin.global && !mixer->failed) if (mixer->plugin.global && !mixer->failed)
mixer_open(mixer); mixer_open(mixer);
const ScopeLock protect(mixer->mutex); const std::lock_guard<Mutex> protect(mixer->mutex);
if (mixer->open) if (mixer->open)
mixer->SetVolume(volume); mixer->SetVolume(volume);
......
...@@ -103,7 +103,7 @@ SmbclientNeighborExplorer::Close() ...@@ -103,7 +103,7 @@ SmbclientNeighborExplorer::Close()
NeighborExplorer::List NeighborExplorer::List
SmbclientNeighborExplorer::GetList() const SmbclientNeighborExplorer::GetList() const
{ {
const ScopeLock protect(mutex); const std::lock_guard<Mutex> protect(mutex);
/* /*
List list; List list;
for (const auto &i : servers) for (const auto &i : servers)
...@@ -172,7 +172,7 @@ static NeighborExplorer::List ...@@ -172,7 +172,7 @@ static NeighborExplorer::List
DetectServers() DetectServers()
{ {
NeighborExplorer::List list; NeighborExplorer::List list;
const ScopeLock protect(smbclient_mutex); const std::lock_guard<Mutex> protect(smbclient_mutex);
ReadServers(list, "smb://"); ReadServers(list, "smb://");
return list; return list;
} }
......
...@@ -23,7 +23,7 @@ ...@@ -23,7 +23,7 @@
void void
notify::Wait() notify::Wait()
{ {
const ScopeLock protect(mutex); const std::lock_guard<Mutex> protect(mutex);
while (!pending) while (!pending)
cond.wait(mutex); cond.wait(mutex);
pending = false; pending = false;
...@@ -32,7 +32,7 @@ notify::Wait() ...@@ -32,7 +32,7 @@ notify::Wait()
void void
notify::Signal() notify::Signal()
{ {
const ScopeLock protect(mutex); const std::lock_guard<Mutex> protect(mutex);
pending = true; pending = true;
cond.signal(); cond.signal();
} }
...@@ -40,6 +40,6 @@ notify::Signal() ...@@ -40,6 +40,6 @@ notify::Signal()
void void
notify::Clear() notify::Clear()
{ {
const ScopeLock protect(mutex); const std::lock_guard<Mutex> protect(mutex);
pending = false; pending = false;
} }
...@@ -440,7 +440,7 @@ public: ...@@ -440,7 +440,7 @@ public:
gcc_pure gcc_pure
bool LockIsChunkConsumed(const MusicChunk &chunk) { bool LockIsChunkConsumed(const MusicChunk &chunk) {
const ScopeLock protect(mutex); const std::lock_guard<Mutex> protect(mutex);
return IsChunkConsumed(chunk); return IsChunkConsumed(chunk);
} }
......
...@@ -109,12 +109,12 @@ MultipleOutputs::EnableDisable() ...@@ -109,12 +109,12 @@ MultipleOutputs::EnableDisable()
/* parallel execution */ /* parallel execution */
for (auto ao : outputs) { for (auto ao : outputs) {
const ScopeLock lock(ao->mutex); const std::lock_guard<Mutex> lock(ao->mutex);
ao->EnableDisableAsync(); ao->EnableDisableAsync();
} }
for (auto ao : outputs) { for (auto ao : outputs) {
const ScopeLock lock(ao->mutex); const std::lock_guard<Mutex> lock(ao->mutex);
ao->WaitForCommand(); ao->WaitForCommand();
} }
} }
...@@ -123,7 +123,7 @@ bool ...@@ -123,7 +123,7 @@ bool
MultipleOutputs::AllFinished() const MultipleOutputs::AllFinished() const
{ {
for (auto ao : outputs) { for (auto ao : outputs) {
const ScopeLock protect(ao->mutex); const std::lock_guard<Mutex> protect(ao->mutex);
if (ao->IsOpen() && !ao->IsCommandFinished()) if (ao->IsOpen() && !ao->IsCommandFinished())
return false; return false;
} }
...@@ -215,7 +215,7 @@ MultipleOutputs::Open(const AudioFormat audio_format, ...@@ -215,7 +215,7 @@ MultipleOutputs::Open(const AudioFormat audio_format,
std::exception_ptr first_error; std::exception_ptr first_error;
for (auto ao : outputs) { for (auto ao : outputs) {
const ScopeLock lock(ao->mutex); const std::lock_guard<Mutex> lock(ao->mutex);
if (ao->IsEnabled()) if (ao->IsEnabled())
enabled = true; enabled = true;
......
...@@ -65,7 +65,7 @@ AudioOutput::CommandWait(Command cmd) ...@@ -65,7 +65,7 @@ AudioOutput::CommandWait(Command cmd)
void void
AudioOutput::LockCommandWait(Command cmd) AudioOutput::LockCommandWait(Command cmd)
{ {
const ScopeLock protect(mutex); const std::lock_guard<Mutex> protect(mutex);
CommandWait(cmd); CommandWait(cmd);
} }
...@@ -162,7 +162,7 @@ AudioOutput::LockUpdate(const AudioFormat audio_format, ...@@ -162,7 +162,7 @@ AudioOutput::LockUpdate(const AudioFormat audio_format,
const MusicPipe &mp, const MusicPipe &mp,
bool force) bool force)
{ {
const ScopeLock protect(mutex); const std::lock_guard<Mutex> protect(mutex);
if (enabled && really_enabled) { if (enabled && really_enabled) {
if (force || !fail_timer.IsDefined() || if (force || !fail_timer.IsDefined() ||
...@@ -178,7 +178,7 @@ AudioOutput::LockUpdate(const AudioFormat audio_format, ...@@ -178,7 +178,7 @@ AudioOutput::LockUpdate(const AudioFormat audio_format,
void void
AudioOutput::LockPlay() AudioOutput::LockPlay()
{ {
const ScopeLock protect(mutex); const std::lock_guard<Mutex> protect(mutex);
assert(allow_play); assert(allow_play);
...@@ -197,7 +197,7 @@ AudioOutput::LockPauseAsync() ...@@ -197,7 +197,7 @@ AudioOutput::LockPauseAsync()
mixer_auto_close()) */ mixer_auto_close()) */
mixer_auto_close(mixer); mixer_auto_close(mixer);
const ScopeLock protect(mutex); const std::lock_guard<Mutex> protect(mutex);
assert(allow_play); assert(allow_play);
if (IsOpen()) if (IsOpen())
...@@ -207,7 +207,7 @@ AudioOutput::LockPauseAsync() ...@@ -207,7 +207,7 @@ AudioOutput::LockPauseAsync()
void void
AudioOutput::LockDrainAsync() AudioOutput::LockDrainAsync()
{ {
const ScopeLock protect(mutex); const std::lock_guard<Mutex> protect(mutex);
assert(allow_play); assert(allow_play);
if (IsOpen()) if (IsOpen())
...@@ -217,7 +217,7 @@ AudioOutput::LockDrainAsync() ...@@ -217,7 +217,7 @@ AudioOutput::LockDrainAsync()
void void
AudioOutput::LockCancelAsync() AudioOutput::LockCancelAsync()
{ {
const ScopeLock protect(mutex); const std::lock_guard<Mutex> protect(mutex);
if (IsOpen()) { if (IsOpen()) {
allow_play = false; allow_play = false;
...@@ -228,7 +228,7 @@ AudioOutput::LockCancelAsync() ...@@ -228,7 +228,7 @@ AudioOutput::LockCancelAsync()
void void
AudioOutput::LockAllowPlay() AudioOutput::LockAllowPlay()
{ {
const ScopeLock protect(mutex); const std::lock_guard<Mutex> protect(mutex);
allow_play = true; allow_play = true;
if (IsOpen()) if (IsOpen())
...@@ -249,7 +249,7 @@ AudioOutput::LockCloseWait() ...@@ -249,7 +249,7 @@ AudioOutput::LockCloseWait()
{ {
assert(!open || !fail_timer.IsDefined()); assert(!open || !fail_timer.IsDefined());
const ScopeLock protect(mutex); const std::lock_guard<Mutex> protect(mutex);
CloseWait(); CloseWait();
} }
...@@ -270,7 +270,7 @@ AudioOutput::BeginDestroy() ...@@ -270,7 +270,7 @@ AudioOutput::BeginDestroy()
mixer_auto_close(mixer); mixer_auto_close(mixer);
if (thread.IsDefined()) { if (thread.IsDefined()) {
const ScopeLock protect(mutex); const std::lock_guard<Mutex> protect(mutex);
CommandAsync(Command::KILL); CommandAsync(Command::KILL);
} }
} }
......
...@@ -43,7 +43,7 @@ audio_output_state_save(BufferedOutputStream &os, ...@@ -43,7 +43,7 @@ audio_output_state_save(BufferedOutputStream &os,
{ {
for (unsigned i = 0, n = outputs.Size(); i != n; ++i) { for (unsigned i = 0, n = outputs.Size(); i != n; ++i) {
const AudioOutput &ao = outputs.Get(i); const AudioOutput &ao = outputs.Get(i);
const ScopeLock lock(ao.mutex); const std::lock_guard<Mutex> lock(ao.mutex);
os.Format(AUDIO_DEVICE_STATE "%d:%s\n", os.Format(AUDIO_DEVICE_STATE "%d:%s\n",
ao.IsEnabled(), ao.GetName()); ao.IsEnabled(), ao.GetName());
......
...@@ -397,7 +397,7 @@ AudioOutput::Task() ...@@ -397,7 +397,7 @@ AudioOutput::Task()
SetThreadTimerSlackUS(100); SetThreadTimerSlackUS(100);
const ScopeLock lock(mutex); const std::lock_guard<Mutex> lock(mutex);
while (true) { while (true) {
switch (command) { switch (command) {
......
...@@ -92,7 +92,7 @@ RoarOutput::RoarOutput(const ConfigBlock &block) ...@@ -92,7 +92,7 @@ RoarOutput::RoarOutput(const ConfigBlock &block)
inline int inline int
RoarOutput::GetVolume() const RoarOutput::GetVolume() const
{ {
const ScopeLock protect(mutex); const std::lock_guard<Mutex> protect(mutex);
if (vss == nullptr || !alive) if (vss == nullptr || !alive)
return -1; return -1;
...@@ -116,7 +116,7 @@ RoarOutput::SetVolume(unsigned volume) ...@@ -116,7 +116,7 @@ RoarOutput::SetVolume(unsigned volume)
{ {
assert(volume <= 100); assert(volume <= 100);
const ScopeLock protect(mutex); const std::lock_guard<Mutex> protect(mutex);
if (vss == nullptr || !alive) if (vss == nullptr || !alive)
throw std::runtime_error("closed"); throw std::runtime_error("closed");
...@@ -177,7 +177,7 @@ roar_use_audio_format(struct roar_audio_info *info, ...@@ -177,7 +177,7 @@ roar_use_audio_format(struct roar_audio_info *info,
inline void inline void
RoarOutput::Open(AudioFormat &audio_format) RoarOutput::Open(AudioFormat &audio_format)
{ {
const ScopeLock protect(mutex); const std::lock_guard<Mutex> protect(mutex);
if (roar_simple_connect(&con, if (roar_simple_connect(&con,
host.empty() ? nullptr : host.c_str(), host.empty() ? nullptr : host.c_str(),
...@@ -201,7 +201,7 @@ RoarOutput::Open(AudioFormat &audio_format) ...@@ -201,7 +201,7 @@ RoarOutput::Open(AudioFormat &audio_format)
inline void inline void
RoarOutput::Close() RoarOutput::Close()
{ {
const ScopeLock protect(mutex); const std::lock_guard<Mutex> protect(mutex);
alive = false; alive = false;
...@@ -214,7 +214,7 @@ RoarOutput::Close() ...@@ -214,7 +214,7 @@ RoarOutput::Close()
inline void inline void
RoarOutput::Cancel() RoarOutput::Cancel()
{ {
const ScopeLock protect(mutex); const std::lock_guard<Mutex> protect(mutex);
if (vss == nullptr) if (vss == nullptr)
return; return;
...@@ -306,7 +306,7 @@ RoarOutput::SendTag(const Tag &tag) ...@@ -306,7 +306,7 @@ RoarOutput::SendTag(const Tag &tag)
if (vss == nullptr) if (vss == nullptr)
return; return;
const ScopeLock protect(mutex); const std::lock_guard<Mutex> protect(mutex);
size_t cnt = 0; size_t cnt = 0;
struct roar_keyval vals[32]; struct roar_keyval vals[32];
......
...@@ -56,7 +56,7 @@ HttpdClient::Close() ...@@ -56,7 +56,7 @@ HttpdClient::Close()
void void
HttpdClient::LockClose() HttpdClient::LockClose()
{ {
const ScopeLock protect(httpd.mutex); const std::lock_guard<Mutex> protect(httpd.mutex);
Close(); Close();
} }
...@@ -272,7 +272,7 @@ HttpdClient::GetBytesTillMetaData() const ...@@ -272,7 +272,7 @@ HttpdClient::GetBytesTillMetaData() const
inline bool inline bool
HttpdClient::TryWrite() HttpdClient::TryWrite()
{ {
const ScopeLock protect(httpd.mutex); const std::lock_guard<Mutex> protect(httpd.mutex);
assert(state == RESPONSE); assert(state == RESPONSE);
......
...@@ -200,7 +200,7 @@ public: ...@@ -200,7 +200,7 @@ public:
*/ */
gcc_pure gcc_pure
bool LockHasClients() const { bool LockHasClients() const {
const ScopeLock protect(mutex); const std::lock_guard<Mutex> protect(mutex);
return HasClients(); return HasClients();
} }
......
...@@ -153,7 +153,7 @@ HttpdOutput::RunDeferred() ...@@ -153,7 +153,7 @@ HttpdOutput::RunDeferred()
/* this method runs in the IOThread; it broadcasts pages from /* this method runs in the IOThread; it broadcasts pages from
our own queue to all clients */ our own queue to all clients */
const ScopeLock protect(mutex); const std::lock_guard<Mutex> protect(mutex);
while (!pages.empty()) { while (!pages.empty()) {
Page *page = pages.front(); Page *page = pages.front();
...@@ -200,7 +200,7 @@ HttpdOutput::OnAccept(int fd, SocketAddress address, gcc_unused int uid) ...@@ -200,7 +200,7 @@ HttpdOutput::OnAccept(int fd, SocketAddress address, gcc_unused int uid)
(void)address; (void)address;
#endif /* HAVE_WRAP */ #endif /* HAVE_WRAP */
const ScopeLock protect(mutex); const std::lock_guard<Mutex> protect(mutex);
if (fd >= 0) { if (fd >= 0) {
/* can we allow additional client */ /* can we allow additional client */
...@@ -296,7 +296,7 @@ httpd_output_open(AudioOutput *ao, AudioFormat &audio_format) ...@@ -296,7 +296,7 @@ httpd_output_open(AudioOutput *ao, AudioFormat &audio_format)
{ {
HttpdOutput *httpd = HttpdOutput::Cast(ao); HttpdOutput *httpd = HttpdOutput::Cast(ao);
const ScopeLock protect(httpd->mutex); const std::lock_guard<Mutex> protect(httpd->mutex);
httpd->Open(audio_format); httpd->Open(audio_format);
} }
...@@ -324,7 +324,7 @@ httpd_output_close(AudioOutput *ao) ...@@ -324,7 +324,7 @@ httpd_output_close(AudioOutput *ao)
{ {
HttpdOutput *httpd = HttpdOutput::Cast(ao); HttpdOutput *httpd = HttpdOutput::Cast(ao);
const ScopeLock protect(httpd->mutex); const std::lock_guard<Mutex> protect(httpd->mutex);
httpd->Close(); httpd->Close();
} }
...@@ -496,7 +496,7 @@ HttpdOutput::SendTag(const Tag &tag) ...@@ -496,7 +496,7 @@ HttpdOutput::SendTag(const Tag &tag)
metadata = icy_server_metadata_page(tag, &types[0]); metadata = icy_server_metadata_page(tag, &types[0]);
if (metadata != nullptr) { if (metadata != nullptr) {
const ScopeLock protect(mutex); const std::lock_guard<Mutex> protect(mutex);
for (auto &client : clients) for (auto &client : clients)
client.PushMetaData(metadata); client.PushMetaData(metadata);
} }
...@@ -514,7 +514,7 @@ httpd_output_tag(AudioOutput *ao, const Tag &tag) ...@@ -514,7 +514,7 @@ httpd_output_tag(AudioOutput *ao, const Tag &tag)
inline void inline void
HttpdOutput::CancelAllClients() HttpdOutput::CancelAllClients()
{ {
const ScopeLock protect(mutex); const std::lock_guard<Mutex> protect(mutex);
while (!pages.empty()) { while (!pages.empty()) {
Page *page = pages.front(); Page *page = pages.front();
......
...@@ -319,7 +319,7 @@ SlesOutput::Play(const void *chunk, size_t size) ...@@ -319,7 +319,7 @@ SlesOutput::Play(const void *chunk, size_t size)
pause = false; pause = false;
} }
const ScopeLock protect(mutex); const std::lock_guard<Mutex> protect(mutex);
assert(filled < BUFFER_SIZE); assert(filled < BUFFER_SIZE);
...@@ -348,7 +348,7 @@ SlesOutput::Play(const void *chunk, size_t size) ...@@ -348,7 +348,7 @@ SlesOutput::Play(const void *chunk, size_t size)
inline void inline void
SlesOutput::Drain() SlesOutput::Drain()
{ {
const ScopeLock protect(mutex); const std::lock_guard<Mutex> protect(mutex);
assert(filled < BUFFER_SIZE); assert(filled < BUFFER_SIZE);
...@@ -371,7 +371,7 @@ SlesOutput::Cancel() ...@@ -371,7 +371,7 @@ SlesOutput::Cancel()
FormatWarning(sles_domain, FormatWarning(sles_domain,
"AndroidSimpleBufferQueue.Clear() failed"); "AndroidSimpleBufferQueue.Clear() failed");
const ScopeLock protect(mutex); const std::lock_guard<Mutex> protect(mutex);
n_queued = 0; n_queued = 0;
filled = 0; filled = 0;
} }
...@@ -398,7 +398,7 @@ SlesOutput::Pause() ...@@ -398,7 +398,7 @@ SlesOutput::Pause()
inline void inline void
SlesOutput::PlayedCallback() SlesOutput::PlayedCallback()
{ {
const ScopeLock protect(mutex); const std::lock_guard<Mutex> protect(mutex);
assert(n_queued > 0); assert(n_queued > 0);
--n_queued; --n_queued;
cond.signal(); cond.signal();
......
...@@ -64,7 +64,7 @@ PlayerControl::Play(DetachedSong *song) ...@@ -64,7 +64,7 @@ PlayerControl::Play(DetachedSong *song)
{ {
assert(song != nullptr); assert(song != nullptr);
const ScopeLock protect(mutex); const std::lock_guard<Mutex> protect(mutex);
SeekLocked(song, SongTime::zero()); SeekLocked(song, SongTime::zero());
if (state == PlayerState::PAUSE) if (state == PlayerState::PAUSE)
...@@ -118,14 +118,14 @@ PlayerControl::PauseLocked() ...@@ -118,14 +118,14 @@ PlayerControl::PauseLocked()
void void
PlayerControl::LockPause() PlayerControl::LockPause()
{ {
const ScopeLock protect(mutex); const std::lock_guard<Mutex> protect(mutex);
PauseLocked(); PauseLocked();
} }
void void
PlayerControl::LockSetPause(bool pause_flag) PlayerControl::LockSetPause(bool pause_flag)
{ {
const ScopeLock protect(mutex); const std::lock_guard<Mutex> protect(mutex);
switch (state) { switch (state) {
case PlayerState::STOP: case PlayerState::STOP:
...@@ -146,7 +146,7 @@ PlayerControl::LockSetPause(bool pause_flag) ...@@ -146,7 +146,7 @@ PlayerControl::LockSetPause(bool pause_flag)
void void
PlayerControl::LockSetBorderPause(bool _border_pause) PlayerControl::LockSetBorderPause(bool _border_pause)
{ {
const ScopeLock protect(mutex); const std::lock_guard<Mutex> protect(mutex);
border_pause = _border_pause; border_pause = _border_pause;
} }
...@@ -155,7 +155,7 @@ PlayerControl::LockGetStatus() ...@@ -155,7 +155,7 @@ PlayerControl::LockGetStatus()
{ {
player_status status; player_status status;
const ScopeLock protect(mutex); const std::lock_guard<Mutex> protect(mutex);
SynchronousCommand(PlayerCommand::REFRESH); SynchronousCommand(PlayerCommand::REFRESH);
status.state = state; status.state = state;
...@@ -183,14 +183,14 @@ PlayerControl::SetError(PlayerError type, std::exception_ptr &&_error) ...@@ -183,14 +183,14 @@ PlayerControl::SetError(PlayerError type, std::exception_ptr &&_error)
void void
PlayerControl::LockClearError() PlayerControl::LockClearError()
{ {
const ScopeLock protect(mutex); const std::lock_guard<Mutex> protect(mutex);
ClearError(); ClearError();
} }
void void
PlayerControl::LockSetTaggedSong(const DetachedSong &song) PlayerControl::LockSetTaggedSong(const DetachedSong &song)
{ {
const ScopeLock protect(mutex); const std::lock_guard<Mutex> protect(mutex);
delete tagged_song; delete tagged_song;
tagged_song = new DetachedSong(song); tagged_song = new DetachedSong(song);
} }
...@@ -207,7 +207,7 @@ PlayerControl::LockEnqueueSong(DetachedSong *song) ...@@ -207,7 +207,7 @@ PlayerControl::LockEnqueueSong(DetachedSong *song)
{ {
assert(song != nullptr); assert(song != nullptr);
const ScopeLock protect(mutex); const std::lock_guard<Mutex> protect(mutex);
EnqueueSongLocked(song); EnqueueSongLocked(song);
} }
...@@ -246,7 +246,7 @@ PlayerControl::LockSeek(DetachedSong *song, SongTime t) ...@@ -246,7 +246,7 @@ PlayerControl::LockSeek(DetachedSong *song, SongTime t)
assert(song != nullptr); assert(song != nullptr);
{ {
const ScopeLock protect(mutex); const std::lock_guard<Mutex> protect(mutex);
SeekLocked(song, t); SeekLocked(song, t);
} }
......
...@@ -224,7 +224,7 @@ struct PlayerControl final : AudioOutputClient { ...@@ -224,7 +224,7 @@ struct PlayerControl final : AudioOutputClient {
* this function. * this function.
*/ */
void LockSignal() { void LockSignal() {
const ScopeLock protect(mutex); const std::lock_guard<Mutex> protect(mutex);
Signal(); Signal();
} }
...@@ -277,7 +277,7 @@ struct PlayerControl final : AudioOutputClient { ...@@ -277,7 +277,7 @@ struct PlayerControl final : AudioOutputClient {
} }
void LockCommandFinished() { void LockCommandFinished() {
const ScopeLock protect(mutex); const std::lock_guard<Mutex> protect(mutex);
CommandFinished(); CommandFinished();
} }
...@@ -294,7 +294,7 @@ struct PlayerControl final : AudioOutputClient { ...@@ -294,7 +294,7 @@ struct PlayerControl final : AudioOutputClient {
bool WaitOutputConsumed(unsigned threshold); bool WaitOutputConsumed(unsigned threshold);
bool LockWaitOutputConsumed(unsigned threshold) { bool LockWaitOutputConsumed(unsigned threshold) {
const ScopeLock protect(mutex); const std::lock_guard<Mutex> protect(mutex);
return WaitOutputConsumed(threshold); return WaitOutputConsumed(threshold);
} }
...@@ -333,7 +333,7 @@ private: ...@@ -333,7 +333,7 @@ private:
* object. * object.
*/ */
void LockSynchronousCommand(PlayerCommand cmd) { void LockSynchronousCommand(PlayerCommand cmd) {
const ScopeLock protect(mutex); const std::lock_guard<Mutex> protect(mutex);
SynchronousCommand(cmd); SynchronousCommand(cmd);
} }
...@@ -376,7 +376,7 @@ public: ...@@ -376,7 +376,7 @@ public:
} }
bool LockApplyBorderPause() { bool LockApplyBorderPause() {
const ScopeLock lock(mutex); const std::lock_guard<Mutex> lock(mutex);
return ApplyBorderPause(); return ApplyBorderPause();
} }
...@@ -410,7 +410,7 @@ public: ...@@ -410,7 +410,7 @@ public:
} }
void LockSetOutputError(std::exception_ptr &&_error) { void LockSetOutputError(std::exception_ptr &&_error) {
const ScopeLock lock(mutex); const std::lock_guard<Mutex> lock(mutex);
SetOutputError(std::move(_error)); SetOutputError(std::move(_error));
} }
...@@ -429,7 +429,7 @@ public: ...@@ -429,7 +429,7 @@ public:
* Like CheckRethrowError(), but locks and unlocks the object. * Like CheckRethrowError(), but locks and unlocks the object.
*/ */
void LockCheckRethrowError() const { void LockCheckRethrowError() const {
const ScopeLock protect(mutex); const std::lock_guard<Mutex> protect(mutex);
CheckRethrowError(); CheckRethrowError();
} }
...@@ -462,7 +462,7 @@ public: ...@@ -462,7 +462,7 @@ public:
* Like ReadTaggedSong(), but locks and unlocks the object. * Like ReadTaggedSong(), but locks and unlocks the object.
*/ */
DetachedSong *LockReadTaggedSong() { DetachedSong *LockReadTaggedSong() {
const ScopeLock protect(mutex); const std::lock_guard<Mutex> protect(mutex);
return ReadTaggedSong(); return ReadTaggedSong();
} }
...@@ -521,7 +521,7 @@ public: ...@@ -521,7 +521,7 @@ public:
} }
void LockSetReplayGainMode(ReplayGainMode _mode) { void LockSetReplayGainMode(ReplayGainMode _mode) {
const ScopeLock protect(mutex); const std::lock_guard<Mutex> protect(mutex);
replay_gain_mode = _mode; replay_gain_mode = _mode;
} }
......
...@@ -213,7 +213,7 @@ private: ...@@ -213,7 +213,7 @@ private:
* allowed to be used while a command is being handled. * allowed to be used while a command is being handled.
*/ */
bool WaitDecoderStartup() { bool WaitDecoderStartup() {
const ScopeLock lock(pc.mutex); const std::lock_guard<Mutex> lock(pc.mutex);
while (decoder_starting) { while (decoder_starting) {
if (!CheckDecoderStartup()) { if (!CheckDecoderStartup()) {
...@@ -351,7 +351,7 @@ Player::StartDecoder(MusicPipe &_pipe) ...@@ -351,7 +351,7 @@ Player::StartDecoder(MusicPipe &_pipe)
{ {
/* copy ReplayGain parameters to the decoder */ /* copy ReplayGain parameters to the decoder */
const ScopeLock protect(pc.mutex); const std::lock_guard<Mutex> protect(pc.mutex);
dc.replay_gain_mode = pc.replay_gain_mode; dc.replay_gain_mode = pc.replay_gain_mode;
} }
...@@ -406,7 +406,7 @@ Player::ActivateDecoder() ...@@ -406,7 +406,7 @@ Player::ActivateDecoder()
queued = false; queued = false;
{ {
const ScopeLock lock(pc.mutex); const std::lock_guard<Mutex> lock(pc.mutex);
pc.ClearTaggedSong(); pc.ClearTaggedSong();
...@@ -787,7 +787,7 @@ play_chunk(PlayerControl &pc, ...@@ -787,7 +787,7 @@ play_chunk(PlayerControl &pc,
} }
{ {
const ScopeLock lock(pc.mutex); const std::lock_guard<Mutex> lock(pc.mutex);
pc.bit_rate = chunk->bit_rate; pc.bit_rate = chunk->bit_rate;
} }
...@@ -863,7 +863,7 @@ Player::PlayNextChunk() ...@@ -863,7 +863,7 @@ Player::PlayNextChunk()
} else { } else {
/* there are not enough decoded chunks yet */ /* there are not enough decoded chunks yet */
const ScopeLock lock(pc.mutex); const std::lock_guard<Mutex> lock(pc.mutex);
if (dc.IsIdle()) { if (dc.IsIdle()) {
/* the decoder isn't running, abort /* the decoder isn't running, abort
...@@ -911,7 +911,7 @@ Player::PlayNextChunk() ...@@ -911,7 +911,7 @@ Player::PlayNextChunk()
return false; return false;
} }
const ScopeLock lock(pc.mutex); const std::lock_guard<Mutex> lock(pc.mutex);
/* this formula should prevent that the decoder gets woken up /* this formula should prevent that the decoder gets woken up
with each chunk; it is more efficient to make it decode a with each chunk; it is more efficient to make it decode a
......
...@@ -232,7 +232,7 @@ soundcloud_parse_json(const char *url, yajl_handle hand, ...@@ -232,7 +232,7 @@ soundcloud_parse_json(const char *url, yajl_handle hand,
try { try {
auto input_stream = InputStream::OpenReady(url, mutex, cond); auto input_stream = InputStream::OpenReady(url, mutex, cond);
const ScopeLock protect(mutex); const std::lock_guard<Mutex> protect(mutex);
yajl_status stat; yajl_status stat;
bool done = false; bool done = false;
......
...@@ -213,7 +213,7 @@ CompositeStorage::~CompositeStorage() ...@@ -213,7 +213,7 @@ CompositeStorage::~CompositeStorage()
Storage * Storage *
CompositeStorage::GetMount(const char *uri) CompositeStorage::GetMount(const char *uri)
{ {
const ScopeLock protect(mutex); const std::lock_guard<Mutex> protect(mutex);
auto result = FindStorage(uri); auto result = FindStorage(uri);
if (*result.uri != 0) if (*result.uri != 0)
...@@ -226,7 +226,7 @@ CompositeStorage::GetMount(const char *uri) ...@@ -226,7 +226,7 @@ CompositeStorage::GetMount(const char *uri)
void void
CompositeStorage::Mount(const char *uri, Storage *storage) CompositeStorage::Mount(const char *uri, Storage *storage)
{ {
const ScopeLock protect(mutex); const std::lock_guard<Mutex> protect(mutex);
Directory &directory = root.Make(uri); Directory &directory = root.Make(uri);
if (directory.storage != nullptr) if (directory.storage != nullptr)
...@@ -237,7 +237,7 @@ CompositeStorage::Mount(const char *uri, Storage *storage) ...@@ -237,7 +237,7 @@ CompositeStorage::Mount(const char *uri, Storage *storage)
bool bool
CompositeStorage::Unmount(const char *uri) CompositeStorage::Unmount(const char *uri)
{ {
const ScopeLock protect(mutex); const std::lock_guard<Mutex> protect(mutex);
return root.Unmount(uri); return root.Unmount(uri);
} }
...@@ -266,7 +266,7 @@ CompositeStorage::FindStorage(const char *uri) const ...@@ -266,7 +266,7 @@ CompositeStorage::FindStorage(const char *uri) const
StorageFileInfo StorageFileInfo
CompositeStorage::GetInfo(const char *uri, bool follow) CompositeStorage::GetInfo(const char *uri, bool follow)
{ {
const ScopeLock protect(mutex); const std::lock_guard<Mutex> protect(mutex);
std::exception_ptr error; std::exception_ptr error;
...@@ -298,7 +298,7 @@ CompositeStorage::GetInfo(const char *uri, bool follow) ...@@ -298,7 +298,7 @@ CompositeStorage::GetInfo(const char *uri, bool follow)
StorageDirectoryReader * StorageDirectoryReader *
CompositeStorage::OpenDirectory(const char *uri) CompositeStorage::OpenDirectory(const char *uri)
{ {
const ScopeLock protect(mutex); const std::lock_guard<Mutex> protect(mutex);
auto f = FindStorage(uri); auto f = FindStorage(uri);
const Directory *directory = f.directory->Find(f.uri); const Directory *directory = f.directory->Find(f.uri);
...@@ -324,7 +324,7 @@ CompositeStorage::OpenDirectory(const char *uri) ...@@ -324,7 +324,7 @@ CompositeStorage::OpenDirectory(const char *uri)
std::string std::string
CompositeStorage::MapUTF8(const char *uri) const CompositeStorage::MapUTF8(const char *uri) const
{ {
const ScopeLock protect(mutex); const std::lock_guard<Mutex> protect(mutex);
auto f = FindStorage(uri); auto f = FindStorage(uri);
if (f.directory->storage == nullptr) if (f.directory->storage == nullptr)
...@@ -336,7 +336,7 @@ CompositeStorage::MapUTF8(const char *uri) const ...@@ -336,7 +336,7 @@ CompositeStorage::MapUTF8(const char *uri) const
AllocatedPath AllocatedPath
CompositeStorage::MapFS(const char *uri) const CompositeStorage::MapFS(const char *uri) const
{ {
const ScopeLock protect(mutex); const std::lock_guard<Mutex> protect(mutex);
auto f = FindStorage(uri); auto f = FindStorage(uri);
if (f.directory->storage == nullptr) if (f.directory->storage == nullptr)
...@@ -348,7 +348,7 @@ CompositeStorage::MapFS(const char *uri) const ...@@ -348,7 +348,7 @@ CompositeStorage::MapFS(const char *uri) const
const char * const char *
CompositeStorage::MapToRelativeUTF8(const char *uri) const CompositeStorage::MapToRelativeUTF8(const char *uri) const
{ {
const ScopeLock protect(mutex); const std::lock_guard<Mutex> protect(mutex);
if (root.storage != nullptr) { if (root.storage != nullptr) {
const char *result = root.storage->MapToRelativeUTF8(uri); const char *result = root.storage->MapToRelativeUTF8(uri);
......
...@@ -110,7 +110,7 @@ public: ...@@ -110,7 +110,7 @@ public:
*/ */
template<typename T> template<typename T>
void VisitMounts(T t) const { void VisitMounts(T t) const {
const ScopeLock protect(mutex); const std::lock_guard<Mutex> protect(mutex);
std::string uri; std::string uri;
VisitMounts(uri, root, t); VisitMounts(uri, root, t);
} }
......
...@@ -133,7 +133,7 @@ private: ...@@ -133,7 +133,7 @@ private:
void SetState(State _state) { void SetState(State _state) {
assert(GetEventLoop().IsInside()); assert(GetEventLoop().IsInside());
const ScopeLock protect(mutex); const std::lock_guard<Mutex> protect(mutex);
state = _state; state = _state;
cond.broadcast(); cond.broadcast();
} }
...@@ -141,7 +141,7 @@ private: ...@@ -141,7 +141,7 @@ private:
void SetState(State _state, std::exception_ptr &&e) { void SetState(State _state, std::exception_ptr &&e) {
assert(GetEventLoop().IsInside()); assert(GetEventLoop().IsInside());
const ScopeLock protect(mutex); const std::lock_guard<Mutex> protect(mutex);
state = _state; state = _state;
last_exception = std::move(e); last_exception = std::move(e);
cond.broadcast(); cond.broadcast();
...@@ -164,7 +164,7 @@ private: ...@@ -164,7 +164,7 @@ private:
} }
void WaitConnected() { void WaitConnected() {
const ScopeLock protect(mutex); const std::lock_guard<Mutex> protect(mutex);
while (true) { while (true) {
switch (state) { switch (state) {
......
...@@ -97,7 +97,7 @@ GetInfo(const char *path) ...@@ -97,7 +97,7 @@ GetInfo(const char *path)
struct stat st; struct stat st;
{ {
const ScopeLock protect(smbclient_mutex); const std::lock_guard<Mutex> protect(smbclient_mutex);
if (smbc_stat(path, &st) != 0) if (smbc_stat(path, &st) != 0)
throw MakeErrno("Failed to access file"); throw MakeErrno("Failed to access file");
} }
...@@ -132,7 +132,7 @@ SmbclientStorage::OpenDirectory(const char *uri_utf8) ...@@ -132,7 +132,7 @@ SmbclientStorage::OpenDirectory(const char *uri_utf8)
int handle; int handle;
{ {
const ScopeLock protect(smbclient_mutex); const std::lock_guard<Mutex> protect(smbclient_mutex);
handle = smbc_opendir(mapped.c_str()); handle = smbc_opendir(mapped.c_str());
if (handle < 0) if (handle < 0)
throw MakeErrno("Failed to open directory"); throw MakeErrno("Failed to open directory");
...@@ -160,7 +160,7 @@ SmbclientDirectoryReader::~SmbclientDirectoryReader() ...@@ -160,7 +160,7 @@ SmbclientDirectoryReader::~SmbclientDirectoryReader()
const char * const char *
SmbclientDirectoryReader::Read() SmbclientDirectoryReader::Read()
{ {
const ScopeLock protect(smbclient_mutex); const std::lock_guard<Mutex> protect(smbclient_mutex);
struct smbc_dirent *e; struct smbc_dirent *e;
while ((e = smbc_readdir(handle)) != nullptr) { while ((e = smbc_readdir(handle)) != nullptr) {
...@@ -187,7 +187,7 @@ CreateSmbclientStorageURI(gcc_unused EventLoop &event_loop, const char *base) ...@@ -187,7 +187,7 @@ CreateSmbclientStorageURI(gcc_unused EventLoop &event_loop, const char *base)
SmbclientInit(); SmbclientInit();
const ScopeLock protect(smbclient_mutex); const std::lock_guard<Mutex> protect(smbclient_mutex);
SMBCCTX *ctx = smbc_new_context(); SMBCCTX *ctx = smbc_new_context();
if (ctx == nullptr) if (ctx == nullptr)
throw MakeErrno("smbc_new_context() failed"); throw MakeErrno("smbc_new_context() failed");
......
...@@ -42,7 +42,7 @@ struct ApeFooter { ...@@ -42,7 +42,7 @@ struct ApeFooter {
bool bool
tag_ape_scan(InputStream &is, ApeTagCallback callback) tag_ape_scan(InputStream &is, ApeTagCallback callback)
try { try {
const ScopeLock protect(is.mutex); const std::lock_guard<Mutex> protect(is.mutex);
if (!is.KnownSize() || !is.CheapSeeking()) if (!is.KnownSize() || !is.CheapSeeking())
return false; return false;
......
...@@ -210,7 +210,7 @@ try { ...@@ -210,7 +210,7 @@ try {
UniqueId3Tag UniqueId3Tag
tag_id3_load(InputStream &is) tag_id3_load(InputStream &is)
try { try {
const ScopeLock protect(is.mutex); const std::lock_guard<Mutex> protect(is.mutex);
auto tag = tag_id3_find_from_beginning(is); auto tag = tag_id3_find_from_beginning(is);
if (tag == nullptr && is.CheapSeeking()) { if (tag == nullptr && is.CheapSeeking()) {
......
...@@ -44,8 +44,6 @@ class Mutex : public PosixMutex {}; ...@@ -44,8 +44,6 @@ class Mutex : public PosixMutex {};
#endif #endif
using ScopeLock = std::lock_guard<Mutex>;
/** /**
* Within the scope of an instance, this class will keep a #Mutex * Within the scope of an instance, this class will keep a #Mutex
* unlocked. * unlocked.
......
...@@ -52,7 +52,7 @@ dump_input_stream(InputStreamPtr &&is) ...@@ -52,7 +52,7 @@ dump_input_stream(InputStreamPtr &&is)
dump_text_file(tis); dump_text_file(tis);
} }
const ScopeLock protect(is->mutex); const std::lock_guard<Mutex> protect(is->mutex);
is->Check(); is->Check();
return 0; return 0;
......
...@@ -50,7 +50,7 @@ tag_save(FILE *file, const Tag &tag) ...@@ -50,7 +50,7 @@ tag_save(FILE *file, const Tag &tag)
static int static int
dump_input_stream(InputStream *is) dump_input_stream(InputStream *is)
{ {
const ScopeLock protect(is->mutex); const std::lock_guard<Mutex> protect(is->mutex);
/* print meta data */ /* print meta data */
......
...@@ -65,7 +65,7 @@ public: ...@@ -65,7 +65,7 @@ public:
CPPUNIT_ASSERT(ris != sis); CPPUNIT_ASSERT(ris != sis);
CPPUNIT_ASSERT(ris != nullptr); CPPUNIT_ASSERT(ris != nullptr);
const ScopeLock protect(mutex); const std::lock_guard<Mutex> protect(mutex);
ris->Update(); ris->Update();
CPPUNIT_ASSERT(ris->IsReady()); CPPUNIT_ASSERT(ris->IsReady());
......
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