From ef260377c37b55514af25491f66e9e61f0e93c43 Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Thu, 31 Dec 2015 13:44:19 +0100 Subject: [PATCH] decoder/Internal: use ScopeLock --- src/decoder/DecoderInternal.cxx | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/src/decoder/DecoderInternal.cxx b/src/decoder/DecoderInternal.cxx index f0bb04125..ee14f4c4d 100644 --- a/src/decoder/DecoderInternal.cxx +++ b/src/decoder/DecoderInternal.cxx @@ -56,6 +56,13 @@ need_chunks(DecoderControl &dc) return dc.command; } +static DecoderCommand +LockNeedChunks(DecoderControl &dc) +{ + const ScopeLock protect(dc.mutex); + return need_chunks(dc); +} + MusicChunk * Decoder::GetChunk() { @@ -74,9 +81,7 @@ Decoder::GetChunk() return chunk; } - dc.Lock(); - cmd = need_chunks(dc); - dc.Unlock(); + cmd = LockNeedChunks(dc); } while (cmd == DecoderCommand::NONE); return nullptr; @@ -97,8 +102,7 @@ Decoder::FlushChunk() chunk = nullptr; - dc.Lock(); + const ScopeLock protect(dc.mutex); if (dc.client_is_waiting) dc.client_cond.signal(); - dc.Unlock(); }