Mercurial > hg > orthanc-stone
diff Framework/dev.h @ 136:a06ad9d7406e wasm
ISlicedVolume::NotifyVolumeReady
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Tue, 16 Jan 2018 12:49:54 +0100 |
parents | e2fe9352f240 |
children | 77c4fef7f4a5 |
line wrap: on
line diff
--- a/Framework/dev.h Tue Jan 02 09:56:08 2018 +0100 +++ b/Framework/dev.h Tue Jan 16 12:49:54 2018 +0100 @@ -39,6 +39,7 @@ namespace OrthancStone { + // TODO: Handle errors while loading class OrthancVolumeImage : public SlicedVolumeBase, private OrthancSlicesLoader::ICallback @@ -48,6 +49,7 @@ std::auto_ptr<ImageBuffer3D> image_; std::auto_ptr<DownloadStack> downloadStack_; bool computeRange_; + size_t pendingSlices_; void ScheduleSliceDownload() { @@ -158,6 +160,7 @@ image_->Clear(); downloadStack_.reset(new DownloadStack(loader.GetSliceCount())); + pendingSlices_ = loader.GetSliceCount(); for (unsigned int i = 0; i < 4; i++) // Limit to 4 simultaneous downloads { @@ -186,7 +189,17 @@ Orthanc::ImageProcessing::Copy(writer.GetAccessor(), *image); } - SlicedVolumeBase::NotifySliceChange(sliceIndex, slice); + SlicedVolumeBase::NotifySliceChange(sliceIndex, slice); + + if (pendingSlices_ == 1) + { + SlicedVolumeBase::NotifyVolumeReady(); + pendingSlices_ = 0; + } + else if (pendingSlices_ > 1) + { + pendingSlices_ -= 1; + } ScheduleSliceDownload(); } @@ -204,7 +217,8 @@ OrthancVolumeImage(IWebService& orthanc, bool computeRange) : loader_(*this, orthanc), - computeRange_(computeRange) + computeRange_(computeRange), + pendingSlices_(0) { }