Index: src/libchcore/TOverlappedWriterFB.cpp =================================================================== diff -u -N -r7892d3d5ca43da7dca4d9e8e0c321c21c3e13ea0 -r3d7d129eda4a42e9f9318ae6b6f3b873dc9290d4 --- src/libchcore/TOverlappedWriterFB.cpp (.../TOverlappedWriterFB.cpp) (revision 7892d3d5ca43da7dca4d9e8e0c321c21c3e13ea0) +++ src/libchcore/TOverlappedWriterFB.cpp (.../TOverlappedWriterFB.cpp) (revision 3d7d129eda4a42e9f9318ae6b6f3b873dc9290d4) @@ -47,6 +47,7 @@ m_bOnlyCreate(bOnlyCreate), m_eventProcessingFinished(true, false), m_eventWritingFinished(true, false), + m_counterOnTheFly(), m_rThreadController(rThreadController) { if(!spFilesystem) @@ -82,6 +83,9 @@ return TSubTaskBase::eSubResult_Continue; } + m_counterOnTheFly.Increase(); + + pBuffer->SetParam(this); TSubTaskBase::ESubOperationResult eResult = m_spDstFile->WriteFileFB(*pBuffer); if(eResult != TSubTaskBase::eSubResult_Continue) m_spWriter->AddEmptyBuffer(pBuffer); @@ -177,6 +181,16 @@ return m_eventProcessingFinished.Handle(); } + void TOverlappedWriterFB::QueueProcessedBuffer(TOverlappedDataBuffer* pBuffer) + { + if(pBuffer->HasError()) + m_spWriter->AddFailedWriteBuffer(pBuffer); + else + m_spWriter->AddFinishedBuffer(pBuffer); + + m_counterOnTheFly.Decrease(); + } + void TOverlappedWriterFB::AdjustProcessedSize(file_size_t fsWritten) { // in case we read past the original eof, try to get new file size from filesystem