| 59 | } |
| 60 | |
| 61 | std::optional<Ref<Image>> ImageQueue::dequeue() { |
| 62 | std::lock_guard<Valdi::Mutex> lock(_mutex); |
| 63 | if (_queue.empty()) { |
| 64 | return std::nullopt; |
| 65 | } |
| 66 | |
| 67 | auto image = std::move(_queue.front()); |
| 68 | _queue.pop_front(); |
| 69 | |
| 70 | return {std::move(image)}; |
| 71 | } |
| 72 | |
| 73 | void ImageQueue::clearQueueUpToSize(size_t maxSize, std::unique_lock<Valdi::Mutex>& lock) { |
| 74 | while (_queue.size() > maxSize) { |