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();
 
   {