diff options
| author | 2015-05-18 21:24:43 -0700 | |
|---|---|---|
| committer | 2015-05-22 15:51:33 -0700 | |
| commit | 16fbba3c2a21bf92e9dd6d17c89da9bccf339691 (patch) | |
| tree | 3950e0267cc2cb1f624d0db3647cffacf4692307 /src | |
| parent | OpenGL renderer (diff) | |
| download | yuzu-16fbba3c2a21bf92e9dd6d17c89da9bccf339691.tar.gz yuzu-16fbba3c2a21bf92e9dd6d17c89da9bccf339691.tar.xz yuzu-16fbba3c2a21bf92e9dd6d17c89da9bccf339691.zip | |
MakeCurrent race condition fix
Diffstat (limited to 'src')
| -rw-r--r-- | src/citra_qt/bootmanager.cpp | 4 | ||||
| -rw-r--r-- | src/citra_qt/main.cpp | 1 |
2 files changed, 3 insertions, 2 deletions
diff --git a/src/citra_qt/bootmanager.cpp b/src/citra_qt/bootmanager.cpp index ab9403007..ea46bb1da 100644 --- a/src/citra_qt/bootmanager.cpp +++ b/src/citra_qt/bootmanager.cpp | |||
| @@ -28,11 +28,11 @@ | |||
| 28 | 28 | ||
| 29 | EmuThread::EmuThread(GRenderWindow* render_window) : | 29 | EmuThread::EmuThread(GRenderWindow* render_window) : |
| 30 | exec_step(false), running(false), stop_run(false), render_window(render_window) { | 30 | exec_step(false), running(false), stop_run(false), render_window(render_window) { |
| 31 | |||
| 32 | connect(this, SIGNAL(started()), render_window, SLOT(moveContext())); | ||
| 33 | } | 31 | } |
| 34 | 32 | ||
| 35 | void EmuThread::run() { | 33 | void EmuThread::run() { |
| 34 | render_window->MakeCurrent(); | ||
| 35 | |||
| 36 | stop_run = false; | 36 | stop_run = false; |
| 37 | 37 | ||
| 38 | // holds whether the cpu was running during the last iteration, | 38 | // holds whether the cpu was running during the last iteration, |
diff --git a/src/citra_qt/main.cpp b/src/citra_qt/main.cpp index 2ea33ebc5..f6010459a 100644 --- a/src/citra_qt/main.cpp +++ b/src/citra_qt/main.cpp | |||
| @@ -216,6 +216,7 @@ void GMainWindow::BootGame(std::string filename) { | |||
| 216 | // Create and start the emulation thread | 216 | // Create and start the emulation thread |
| 217 | emu_thread = Common::make_unique<EmuThread>(render_window); | 217 | emu_thread = Common::make_unique<EmuThread>(render_window); |
| 218 | emit EmulationStarting(emu_thread.get()); | 218 | emit EmulationStarting(emu_thread.get()); |
| 219 | render_window->moveContext(); | ||
| 219 | emu_thread->start(); | 220 | emu_thread->start(); |
| 220 | 221 | ||
| 221 | // BlockingQueuedConnection is important here, it makes sure we've finished refreshing our views before the CPU continues | 222 | // BlockingQueuedConnection is important here, it makes sure we've finished refreshing our views before the CPU continues |