diff options
Diffstat (limited to 'include/MessageQueue.hpp')
-rw-r--r-- | include/MessageQueue.hpp | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/include/MessageQueue.hpp b/include/MessageQueue.hpp index ba28431..1e48102 100644 --- a/include/MessageQueue.hpp +++ b/include/MessageQueue.hpp @@ -59,14 +59,18 @@ namespace QuickMedia { } // Return true from |callback| to remove the element - void erase_if(std::function<bool(T&)> callback) { + int erase_if(std::function<bool(T&)> callback) { std::unique_lock<std::mutex> lock(mutex); + int removed = 0; for(auto it = data_queue.begin(); it != data_queue.end();) { - if(callback(*it)) + if(callback(*it)) { it = data_queue.erase(it); - else + ++removed; + } else { ++it; + } } + return removed; } bool is_running() const { |