Error downgrading now uses a map<threadid, bool>, and error downgrading is canceled during message callbacks

This commit is contained in:
EricLiu2000
2019-07-29 15:16:35 -04:00
parent ff1e65b292
commit 54b98ec9b4
3 changed files with 19 additions and 5 deletions
+3 -3
View File
@@ -2,7 +2,6 @@
#define __ICSNEO_API_EVENTMANAGER_H_
#include <vector>
#include <set>
#include <list>
#include <mutex>
#include <functional>
@@ -80,7 +79,7 @@ private:
// Used by functions for threadsafety
mutable std::mutex mutex;
std::set<std::thread::id> downgradedThreads;
std::map<std::thread::id, bool> downgradedThreads;
// Stores all events
std::list<APIEvent> events;
@@ -92,7 +91,8 @@ private:
void add_internal(APIEvent event) {
if(event.getSeverity() == APIEvent::Severity::Error) {
// if the error was added on a thread that downgrades errors (non-user thread)
if(std::find(downgradedThreads.begin(), downgradedThreads.end(), std::this_thread::get_id()) != downgradedThreads.end()) {
auto i = downgradedThreads.find(std::this_thread::get_id());
if(i != downgradedThreads.end() && i->second) {
event.downgradeFromError();
add_internal_event(event);
} else