Mercurial > hg > orthanc-stone
comparison Applications/StoneWebViewer/WebAssembly/StoneWebViewer.cpp @ 1670:24462a259d8d
comment
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Thu, 19 Nov 2020 19:20:45 +0100 |
parents | d82a141e08d7 |
children | 2c2512918a0f |
comparison
equal
deleted
inserted
replaced
1669:d82a141e08d7 | 1670:24462a259d8d |
---|---|
1261 | 1261 |
1262 class PrefetchItem | 1262 class PrefetchItem |
1263 { | 1263 { |
1264 private: | 1264 private: |
1265 size_t cursorIndex_; | 1265 size_t cursorIndex_; |
1266 bool isFull_; | 1266 bool isFullQuality_; |
1267 | 1267 |
1268 public: | 1268 public: |
1269 PrefetchItem(size_t cursorIndex, | 1269 PrefetchItem(size_t cursorIndex, |
1270 bool isFull) : | 1270 bool isFullQuality) : |
1271 cursorIndex_(cursorIndex), | 1271 cursorIndex_(cursorIndex), |
1272 isFull_(isFull) | 1272 isFullQuality_(isFullQuality) |
1273 { | 1273 { |
1274 } | 1274 } |
1275 | 1275 |
1276 size_t GetCursorIndex() const | 1276 size_t GetCursorIndex() const |
1277 { | 1277 { |
1278 return cursorIndex_; | 1278 return cursorIndex_; |
1279 } | 1279 } |
1280 | 1280 |
1281 bool IsFull() const | 1281 bool IsFullQuality() const |
1282 { | 1282 { |
1283 return isFull_; | 1283 return isFullQuality_; |
1284 } | 1284 } |
1285 }; | 1285 }; |
1286 | 1286 |
1287 | 1287 |
1288 std::unique_ptr<IObserver> observer_; | 1288 std::unique_ptr<IObserver> observer_; |
1314 void ScheduleNextPrefetch() | 1314 void ScheduleNextPrefetch() |
1315 { | 1315 { |
1316 while (!prefetchQueue_.empty()) | 1316 while (!prefetchQueue_.empty()) |
1317 { | 1317 { |
1318 size_t cursorIndex = prefetchQueue_.front().GetCursorIndex(); | 1318 size_t cursorIndex = prefetchQueue_.front().GetCursorIndex(); |
1319 bool isFull = prefetchQueue_.front().IsFull(); | 1319 bool isFullQuality = prefetchQueue_.front().IsFullQuality(); |
1320 prefetchQueue_.pop_front(); | 1320 prefetchQueue_.pop_front(); |
1321 | 1321 |
1322 const std::string sopInstanceUid = frames_->GetInstanceOfFrame(cursorIndex).GetSopInstanceUid(); | 1322 const std::string sopInstanceUid = frames_->GetInstanceOfFrame(cursorIndex).GetSopInstanceUid(); |
1323 unsigned int frameNumber = frames_->GetFrameNumberInInstance(cursorIndex); | 1323 unsigned int frameNumber = frames_->GetFrameNumberInInstance(cursorIndex); |
1324 | 1324 |
1325 { | 1325 { |
1326 FramesCache::Accessor accessor(*cache_, sopInstanceUid, frameNumber); | 1326 FramesCache::Accessor accessor(*cache_, sopInstanceUid, frameNumber); |
1327 if (!accessor.IsValid() || | 1327 if (!accessor.IsValid() || |
1328 (isFull && accessor.GetQuality() == 0)) | 1328 (isFullQuality && accessor.GetQuality() == 0)) |
1329 { | 1329 { |
1330 if (isFull) | 1330 if (isFullQuality) |
1331 { | 1331 { |
1332 ScheduleLoadFullDicomFrame(cursorIndex, PRIORITY_NORMAL, true); | 1332 ScheduleLoadFullDicomFrame(cursorIndex, PRIORITY_NORMAL, true); |
1333 } | 1333 } |
1334 else | 1334 else |
1335 { | 1335 { |
1336 ScheduleLoadRenderedFrame(cursorIndex, PRIORITY_NORMAL, true); | 1336 ScheduleLoadRenderedFrame(cursorIndex, PRIORITY_NORMAL, true); |
1337 } | 1337 } |
1338 return; | 1338 |
1339 return; // We have found a new frame to cache, stop the lookup loop | |
1339 } | 1340 } |
1340 } | 1341 } |
1341 } | 1342 } |
1342 } | 1343 } |
1343 | 1344 |