diff --git a/src/xenia/base/threading_timer_queue.cc b/src/xenia/base/threading_timer_queue.cc index ee4e6d751..79546b9d6 100644 --- a/src/xenia/base/threading_timer_queue.cc +++ b/src/xenia/base/threading_timer_queue.cc @@ -184,7 +184,9 @@ void TimerQueueWaitItem::Disarm() { // once Disarm() has returned. while (!state_.compare_exchange_weak(state, State::kDisarmed, std::memory_order_acq_rel)) { - if (state == State::kInCallbackSelfDisarmed || state == State::kDisarmed) { + if (state == State::kDisarmed) { + // Do not break for kInCallbackSelfDisarmed and keep spinning in order to + // meet guarantees break; } state = State::kIdle;