diff --git a/src/xenia/ui/loop_win.cc b/src/xenia/ui/loop_win.cc index b024fa0cd..2cd57f5fc 100644 --- a/src/xenia/ui/loop_win.cc +++ b/src/xenia/ui/loop_win.cc @@ -57,7 +57,7 @@ void Win32Loop::ThreadMain() { DispatchMessage(&msg); // Process queued functions. - std::lock_guard lock(posted_functions_mutex_); + std::lock_guard lock(posted_functions_mutex_); for (auto it = posted_functions_.begin(); it != posted_functions_.end();) { (*it).Call(); it = posted_functions_.erase(it); @@ -75,7 +75,7 @@ bool Win32Loop::is_on_loop_thread() { void Win32Loop::Post(std::function fn) { assert_true(thread_id_ != 0); { - std::lock_guard lock(posted_functions_mutex_); + std::lock_guard lock(posted_functions_mutex_); PostedFn posted_fn(fn); posted_functions_.push_back(posted_fn); } diff --git a/src/xenia/ui/loop_win.h b/src/xenia/ui/loop_win.h index b50404a98..bd2d28ae2 100644 --- a/src/xenia/ui/loop_win.h +++ b/src/xenia/ui/loop_win.h @@ -64,7 +64,7 @@ class Win32Loop : public Loop { std::mutex pending_timers_mutex_; std::list pending_timers_; - std::mutex posted_functions_mutex_; + std::recursive_mutex posted_functions_mutex_; std::list posted_functions_; };