diff --git a/src/xenia/base/threading_posix.cc b/src/xenia/base/threading_posix.cc index 87c605f84..cd040e22c 100644 --- a/src/xenia/base/threading_posix.cc +++ b/src/xenia/base/threading_posix.cc @@ -922,17 +922,17 @@ void* PosixCondition::ThreadStartRoutine(void* parameter) { current_thread_ = thread; { std::unique_lock 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 lock(thread->handle_.state_mutex_); + thread->handle_.state_signal_.wait( + lock, [thread] { return thread->handle_.state_ != State::kSuspended; }); + } + start_routine(); {