Index: src/libchcore/TOrderedBufferQueue.cpp =================================================================== diff -u -N -rc4cbf6cd567821f9a981586ab5d8294a26f873be -rb941384e121190b6107f1c99b3233667e3daf4ce --- src/libchcore/TOrderedBufferQueue.cpp (.../TOrderedBufferQueue.cpp) (revision c4cbf6cd567821f9a981586ab5d8294a26f873be) +++ src/libchcore/TOrderedBufferQueue.cpp (.../TOrderedBufferQueue.cpp) (revision b941384e121190b6107f1c99b3233667e3daf4ce) @@ -100,6 +100,11 @@ return m_setBuffers.empty(); } + bool TOrderedBufferQueue::HasPoppableBuffer() const + { + return !m_setBuffers.empty() && (*m_setBuffers.begin())->GetFilePosition() == m_ullExpectedBufferPosition; + } + HANDLE TOrderedBufferQueue::GetHasBuffersEvent() const { return m_eventHasBuffers.Handle(); @@ -132,13 +137,24 @@ void TOrderedBufferQueue::UpdateHasBuffers() { if(!m_setBuffers.empty() && (m_ullExpectedBufferPosition == NoPosition || (*m_setBuffers.begin())->GetFilePosition() == m_ullExpectedBufferPosition)) + { m_eventHasBuffers.SetEvent(); + m_notifier(true); + } else + { m_eventHasBuffers.ResetEvent(); + m_notifier(false); + } } void TOrderedBufferQueue::UpdateHasErrors() { m_eventHasError.SetEvent(m_pFirstErrorBuffer != nullptr); } + + boost::signals2::signal& TOrderedBufferQueue::GetNotifier() + { + return m_notifier; + } }