From c4dbdeba0ada85eb8213455cd4c183ed8d6632e1 Mon Sep 17 00:00:00 2001 From: Pierre de La Morinerie Date: Sun, 11 Mar 2018 13:50:18 +0000 Subject: [PATCH] Fix QGLWidget viewport resize on macOS This fixes #2092, a long-standing bug where on macOS resizing the window results in a garbled display. It seems the seemingly optional child()->makeCurrent call is actually required on macOS. Enabling it in all cases fixes the resize issue. --- src/citra_qt/bootmanager.cpp | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/citra_qt/bootmanager.cpp b/src/citra_qt/bootmanager.cpp index 510d6587a..1691a5124 100644 --- a/src/citra_qt/bootmanager.cpp +++ b/src/citra_qt/bootmanager.cpp @@ -128,13 +128,14 @@ void GRenderWindow::moveContext() { } void GRenderWindow::SwapBuffers() { -#if !defined(QT_NO_DEBUG) - // Qt debug runtime prints a bogus warning on the console if you haven't called makeCurrent - // since the last time you called swapBuffers. This presumably means something if you're using - // QGLWidget the "regular" way, but in our multi-threaded use case is harmless since we never - // call doneCurrent in this thread. + // In our multi-threaded QGLWidget use case we shouldn't need to call `makeCurrent`, + // since we never call `doneCurrent` in this thread. + // However: + // - The Qt debug runtime prints a bogus warning on the console if `makeCurrent` wasn't called + // since the last time `swapBuffers` was executed; + // - On macOS, if `makeCurrent` isn't called explicitely, resizing the buffer breaks. child->makeCurrent(); -#endif + child->swapBuffers(); }