| 317 | } |
| 318 | |
| 319 | void DrawLooper::processFrames(TimePoint time) { |
| 320 | _processingFrames = true; |
| 321 | |
| 322 | while (processFrameForNextLayer(time)) { |
| 323 | } |
| 324 | |
| 325 | bool needScheduleDraw = false; |
| 326 | bool needScheduleProcessFrame = false; |
| 327 | auto entriesLock = getEntriesLock(); |
| 328 | |
| 329 | for (const auto& it : _entries) { |
| 330 | if (it->getLayerRoot()->needsProcessFrame()) { |
| 331 | needScheduleProcessFrame = true; |
| 332 | } |
| 333 | if (it->getDrawState().needsDraw) { |
| 334 | needScheduleDraw = true; |
| 335 | } |
| 336 | } |
| 337 | |
| 338 | _processingFrames = false; |
| 339 | _processFrameScheduled = false; |
| 340 | |
| 341 | if (needScheduleProcessFrame) { |
| 342 | doScheduleProcessFrame(); |
| 343 | } |
| 344 | |
| 345 | if (needScheduleDraw && !_drawScheduled && !_inBackground) { |
| 346 | doScheduleDraw(); |
| 347 | } |
| 348 | } |
| 349 | |
| 350 | void DrawLooper::performCleanup(DrawLooper::CleanUpMode cleanUpMode) { |
| 351 | for (const auto& managedGraphicsContext : _managedGraphicsContexts) { |
no test coverage detected