From f33d8ff3081bc86cd4c98949fc6de396e8b53d9a Mon Sep 17 00:00:00 2001 From: "Scott E. Graves" Date: Fri, 21 Feb 2025 19:59:20 -0600 Subject: [PATCH] refactor --- .../src/file_manager/ring_buffer_base.cpp | 45 ++++++++++--------- 1 file changed, 23 insertions(+), 22 deletions(-) diff --git a/repertory/librepertory/src/file_manager/ring_buffer_base.cpp b/repertory/librepertory/src/file_manager/ring_buffer_base.cpp index 0db0ab60..b869cfd5 100644 --- a/repertory/librepertory/src/file_manager/ring_buffer_base.cpp +++ b/repertory/librepertory/src/file_manager/ring_buffer_base.cpp @@ -367,30 +367,31 @@ void ring_buffer_base::update_position(std::size_t count, bool is_forward) { if (is_forward ? (ring_pos_ + count) <= ring_end_ : (ring_pos_ - count) >= ring_begin_) { ring_pos_ += is_forward ? count : -count; - } else { - auto delta = is_forward ? count - (ring_end_ - ring_pos_) - : count - (ring_pos_ - ring_begin_); - - if (delta >= read_state_.size()) { - read_state_.set(0U, read_state_.size(), false); - ring_pos_ += is_forward ? count : -count; - ring_begin_ += is_forward ? delta : -delta; - } else { - for (std::size_t idx = 0U; idx < delta; ++idx) { - if (is_forward) { - read_state_[(ring_begin_ + idx) % read_state_.size()] = false; - } else { - read_state_[(ring_end_ - idx) % read_state_.size()] = false; - } - } - ring_begin_ += is_forward ? delta : -delta; - ring_pos_ += is_forward ? count : -count; - } - - ring_end_ = - std::min(total_chunks_ - 1U, ring_begin_ + read_state_.size() - 1U); + chunk_notify_.notify_all(); + return; } + auto delta = is_forward ? count - (ring_end_ - ring_pos_) + : count - (ring_pos_ - ring_begin_); + if (delta >= read_state_.size()) { + read_state_.set(0U, read_state_.size(), false); + ring_pos_ += is_forward ? count : -count; + ring_begin_ += is_forward ? delta : -delta; + } else { + for (std::size_t idx = 0U; idx < delta; ++idx) { + if (is_forward) { + read_state_[(ring_begin_ + idx) % read_state_.size()] = false; + } else { + read_state_[(ring_end_ - idx) % read_state_.size()] = false; + } + } + ring_begin_ += is_forward ? delta : -delta; + ring_pos_ += is_forward ? count : -count; + } + + ring_end_ = + std::min(total_chunks_ - 1U, ring_begin_ + read_state_.size() - 1U); + chunk_notify_.notify_all(); } } // namespace repertory