Index: src/libchcore/TWriteBufferQueueWrapper.cpp =================================================================== diff -u -N -rda7737de7046ba0ecd255240fb36b4a46584ebf2 -rb941384e121190b6107f1c99b3233667e3daf4ce --- src/libchcore/TWriteBufferQueueWrapper.cpp (.../TWriteBufferQueueWrapper.cpp) (revision da7737de7046ba0ecd255240fb36b4a46584ebf2) +++ src/libchcore/TWriteBufferQueueWrapper.cpp (.../TWriteBufferQueueWrapper.cpp) (revision b941384e121190b6107f1c99b3233667e3daf4ce) @@ -31,8 +31,15 @@ throw TCoreException(eErr_InvalidArgument, L"spQueue is NULL", LOCATION); UpdateHasBuffers(); + + m_emptyBuffersQueueConnector = m_spDataQueue->GetNotifier().connect(boost::bind(&TWriteBufferQueueWrapper::UpdateHasBuffers, this, _1)); } + TWriteBufferQueueWrapper::~TWriteBufferQueueWrapper() + { + m_emptyBuffersQueueConnector.disconnect(); + } + void TWriteBufferQueueWrapper::Push(TOverlappedDataBuffer* pBuffer) { if (!pBuffer) @@ -72,7 +79,7 @@ bool TWriteBufferQueueWrapper::IsBufferReady() const { - return !m_tClaimedQueue.empty() || !m_spDataQueue->IsEmpty(); + return !m_tClaimedQueue.empty() || m_spDataQueue->HasPoppableBuffer(); } size_t TWriteBufferQueueWrapper::GetCount() const