aboutsummaryrefslogtreecommitdiff
path: root/include/MessageQueue.hpp
diff options
context:
space:
mode:
authordec05eba <dec05eba@protonmail.com>2021-06-08 13:39:11 +0200
committerdec05eba <dec05eba@protonmail.com>2021-06-08 13:39:11 +0200
commit0f0bf1c649388c07ae6e8dd784d7402f68691b96 (patch)
tree22868fcd37cdc15c6d0b6002d85b7c1676b2f34d /include/MessageQueue.hpp
parentda95623137f85b07abf9f56035c23819af1e7fe9 (diff)
Remove images that are not visible from the loading queue, prepare for inline images
Diffstat (limited to 'include/MessageQueue.hpp')
-rw-r--r--include/MessageQueue.hpp12
1 files changed, 12 insertions, 0 deletions
diff --git a/include/MessageQueue.hpp b/include/MessageQueue.hpp
index 7c34d51..3f38ca2 100644
--- a/include/MessageQueue.hpp
+++ b/include/MessageQueue.hpp
@@ -4,6 +4,7 @@
#include <mutex>
#include <condition_variable>
#include <optional>
+#include <functional>
namespace QuickMedia {
template <typename T>
@@ -55,6 +56,17 @@ namespace QuickMedia {
std::unique_lock<std::mutex> lock(mutex);
running = true;
}
+
+ // Returns true from |callback| to remove the element
+ void erase_if(std::function<bool(T&)> callback) {
+ std::unique_lock<std::mutex> lock(mutex);
+ for(auto it = data_queue.begin(); it != data_queue.end();) {
+ if(callback(*it))
+ it = data_queue.erase(it);
+ else
+ ++it;
+ }
+ }
private:
std::deque<T> data_queue;
std::mutex mutex;