input/buffering: merge "read_error" and "idle" checks in thread

This commit is contained in:
Max Kellermann 2019-05-16 22:24:25 +02:00
parent 0cf922b2da
commit 869d215058

View File

@ -146,9 +146,10 @@ BufferingInputStream::RunThread() noexcept
seek = false;
read_error = {};
client_cond.notify_one();
} else if (!idle && !read_error &&
offset != input->GetOffset() &&
!IsAvailable()) {
} else if (read_error || idle) {
/* wait for client to consume the read error */
wake_cond.wait(lock);
} else if (offset != input->GetOffset() && !IsAvailable()) {
/* a past Seek() call was a no-op because data
was already available at that position, but
now we've reached a new position where
@ -172,8 +173,7 @@ BufferingInputStream::RunThread() noexcept
client_cond.notify_one();
OnBufferAvailable();
}
} else if (!idle && !read_error &&
input->IsAvailable() && !input->IsEOF()) {
} else if (input->IsAvailable() && !input->IsEOF()) {
const auto read_offset = input->GetOffset();
auto w = buffer.Write(read_offset);