diff --git a/JGE/src/JGE.cpp b/JGE/src/JGE.cpp index 16af06b4c..9970a2515 100644 --- a/JGE/src/JGE.cpp +++ b/JGE/src/JGE.cpp @@ -10,6 +10,7 @@ #include #include +#include #include #include "../include/JGE.h" @@ -128,16 +129,20 @@ void JGE::HoldKey_NoRepeat(const JButton sym) } void JGE::ReleaseKey(const LocalKeySym sym) { + set s; const pair rng = keyBinds.equal_range(sym); for (keycodes_it it = rng.first; it != rng.second; ++it) - holds.erase(it->second); + { + s.insert(it->second); + holds.erase(it->second); + } queue< pair, bool> > r; while (!keyBuffer.empty()) { pair, bool> q = keyBuffer.front(); keyBuffer.pop(); - if ((!q.second)) r.push(q); + if ((!q.second) || (s.end() == s.find(q.first.second))) r.push(q); } keyBuffer = r; }