diff --git a/src/xenia/base/threading_posix.cc b/src/xenia/base/threading_posix.cc index bb45107e3..23653a968 100644 --- a/src/xenia/base/threading_posix.cc +++ b/src/xenia/base/threading_posix.cc @@ -916,17 +916,17 @@ void* PosixCondition<Thread>::ThreadStartRoutine(void* parameter) { current_thread_ = thread; { std::unique_lock<std::mutex> lock(thread->handle_.state_mutex_); - if (create_suspended) { - thread->handle_.state_ = State::kSuspended; - thread->handle_.state_signal_.wait(lock, [thread] { - return thread->handle_.state_ != State::kSuspended; - }); - } else { - thread->handle_.state_ = State::kRunning; - } + thread->handle_.state_ = + create_suspended ? State::kSuspended : State::kRunning; thread->handle_.state_signal_.notify_all(); } + if (create_suspended) { + std::unique_lock<std::mutex> lock(thread->handle_.state_mutex_); + thread->handle_.state_signal_.wait( + lock, [thread] { return thread->handle_.state_ != State::kSuspended; }); + } + start_routine(); {