Commit 280d35a0 authored by Max Kellermann's avatar Max Kellermann

decoder/api: use class ScopeLock

parent eca6b9f0
...@@ -270,18 +270,14 @@ decoder_open_uri(Decoder &decoder, const char *uri, Error &error) ...@@ -270,18 +270,14 @@ decoder_open_uri(Decoder &decoder, const char *uri, Error &error)
if (!is) if (!is)
return nullptr; return nullptr;
mutex.lock(); const ScopeLock lock(mutex);
while (true) { while (true) {
is->Update(); is->Update();
if (is->IsReady()) { if (is->IsReady())
mutex.unlock();
return is; return is;
}
if (dc.command == DecoderCommand::STOP) { if (dc.command == DecoderCommand::STOP)
mutex.unlock();
return nullptr; return nullptr;
}
cond.wait(mutex); cond.wait(mutex);
} }
...@@ -326,13 +322,11 @@ decoder_read(Decoder *decoder, ...@@ -326,13 +322,11 @@ decoder_read(Decoder *decoder,
if (length == 0) if (length == 0)
return 0; return 0;
is.Lock(); ScopeLock lock(is.mutex);
while (true) { while (true) {
if (decoder_check_cancel_read(decoder)) { if (decoder_check_cancel_read(decoder))
is.Unlock();
return 0; return 0;
}
if (is.IsAvailable()) if (is.IsAvailable())
break; break;
...@@ -345,7 +339,7 @@ decoder_read(Decoder *decoder, ...@@ -345,7 +339,7 @@ decoder_read(Decoder *decoder,
assert(nbytes == 0 || !error.IsDefined()); assert(nbytes == 0 || !error.IsDefined());
assert(nbytes > 0 || error.IsDefined() || is.IsEOF()); assert(nbytes > 0 || error.IsDefined() || is.IsEOF());
is.Unlock(); lock.Unlock();
if (gcc_unlikely(nbytes == 0 && error.IsDefined())) if (gcc_unlikely(nbytes == 0 && error.IsDefined()))
LogError(error); LogError(error);
......
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