diff --git a/src/citra_qt/bootmanager.cpp b/src/citra_qt/bootmanager.cpp
index 2407f3a3a..573060d30 100644
--- a/src/citra_qt/bootmanager.cpp
+++ b/src/citra_qt/bootmanager.cpp
@@ -33,7 +33,7 @@ void EmuThread::SetFilename(std::string filename)
 void EmuThread::run()
 {
     stop_run = false;
-    while (true)
+    while (!stop_run)
     {
         for (int tight_loop = 0; tight_loop < 10000; ++tight_loop)
         {
@@ -49,9 +49,6 @@ void EmuThread::run()
                 }
             }
         }
-        QMutexLocker lock(&mutex);
-        if (stop_run)
-            break;
     }
     render_window->moveContext();
 
@@ -65,11 +62,7 @@ void EmuThread::Stop()
         INFO_LOG(MASTER_LOG, "EmuThread::Stop called while emu thread wasn't running, returning...");
         return;
     }
-
-    {
-        QMutexLocker lock(&mutex);
-        stop_run = true;
-    }
+    stop_run = true;
 
     //core::g_state = core::SYS_DIE;
 
@@ -94,7 +87,7 @@ void EmuThread::Stop()
 class GGLWidgetInternal : public QGLWidget
 {
 public:
-    GGLWidgetInternal(QGLFormat fmt, GRenderWindow* parent) : QGLWidget(parent)
+    GGLWidgetInternal(QGLFormat fmt, GRenderWindow* parent) : QGLWidget(fmt, parent)
     {
         parent_ = parent;
     }
diff --git a/src/citra_qt/bootmanager.hxx b/src/citra_qt/bootmanager.hxx
index 4c3e2f0a4..51cb781e9 100644
--- a/src/citra_qt/bootmanager.hxx
+++ b/src/citra_qt/bootmanager.hxx
@@ -1,6 +1,6 @@
-#include <QMutex>
 #include <QThread>
 #include <QGLWidget>
+#include <atomic>
 #include "common/common.h"
 #include "common/emu_window.h"
 
@@ -67,8 +67,7 @@ private:
 
     bool exec_cpu_step;
     bool cpu_running;
-    bool stop_run;
-    QMutex mutex;
+    std::atomic<bool> stop_run;
 
     GRenderWindow* render_window;