summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorbunnei <bunneidev@gmail.com>2020-05-14 06:07:38 +0200
committerGitHub <noreply@github.com>2020-05-14 06:07:38 +0200
commit024c84d2db68584dac144175fa85aaa87ef7acc5 (patch)
tree144d80d1dc23da08fb598fb9514f6cd1e339d588
parentMerge pull request #3757 from ogniK5377/better-voice-mixing (diff)
parentFrontend: Remove tracking for context wrapper (diff)
downloadyuzu-024c84d2db68584dac144175fa85aaa87ef7acc5.tar
yuzu-024c84d2db68584dac144175fa85aaa87ef7acc5.tar.gz
yuzu-024c84d2db68584dac144175fa85aaa87ef7acc5.tar.bz2
yuzu-024c84d2db68584dac144175fa85aaa87ef7acc5.tar.lz
yuzu-024c84d2db68584dac144175fa85aaa87ef7acc5.tar.xz
yuzu-024c84d2db68584dac144175fa85aaa87ef7acc5.tar.zst
yuzu-024c84d2db68584dac144175fa85aaa87ef7acc5.zip
-rw-r--r--src/yuzu/bootmanager.cpp16
1 files changed, 8 insertions, 8 deletions
diff --git a/src/yuzu/bootmanager.cpp b/src/yuzu/bootmanager.cpp
index 3d759f77b..1adf8932b 100644
--- a/src/yuzu/bootmanager.cpp
+++ b/src/yuzu/bootmanager.cpp
@@ -150,18 +150,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 +179,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 {};