diff options
Diffstat (limited to 'src/yuzu/bootmanager.cpp')
| -rw-r--r-- | src/yuzu/bootmanager.cpp | 19 | 
1 files changed, 11 insertions, 8 deletions
diff --git a/src/yuzu/bootmanager.cpp b/src/yuzu/bootmanager.cpp index 3d759f77b..1f5e43043 100644 --- a/src/yuzu/bootmanager.cpp +++ b/src/yuzu/bootmanager.cpp @@ -106,6 +106,9 @@ public:          format.setVersion(4, 3);          format.setProfile(QSurfaceFormat::CompatibilityProfile);          format.setOption(QSurfaceFormat::FormatOption::DeprecatedFunctions); +        if (Settings::values.renderer_debug) { +            format.setOption(QSurfaceFormat::FormatOption::DebugContext); +        }          // TODO: expose a setting for buffer value (ie default/single/double/triple)          format.setSwapBehavior(QSurfaceFormat::DefaultSwapBehavior);          format.setSwapInterval(0); @@ -150,18 +153,19 @@ public:      }      void MakeCurrent() override { -        if (is_current) { -            return; +        // We can't track the current state of the underlying context in this wrapper class because +        // Qt may make the underlying context not current for one reason or another. In particular, +        // the WebBrowser uses GL, so it seems to conflict if we aren't careful. +        // Instead of always just making the context current (which does not have any caching to +        // check if the underlying context is already current) we can check for the current context +        // in the thread local data by calling `currentContext()` and checking if its ours. +        if (QOpenGLContext::currentContext() != context.get()) { +            context->makeCurrent(surface);          } -        is_current = context->makeCurrent(surface);      }      void DoneCurrent() override { -        if (!is_current) { -            return; -        }          context->doneCurrent(); -        is_current = false;      }      QOpenGLContext* GetShareContext() { @@ -178,7 +182,6 @@ private:      std::unique_ptr<QOpenGLContext> context;      std::unique_ptr<QOffscreenSurface> offscreen_surface{};      QSurface* surface; -    bool is_current = false;  };  class DummyContext : public Core::Frontend::GraphicsContext {};  | 
