summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorbunnei <bunneidev@gmail.com>2020-05-14 00:07:38 -0400
committerGitHub <noreply@github.com>2020-05-14 00:07:38 -0400
commit024c84d2db68584dac144175fa85aaa87ef7acc5 (patch)
tree144d80d1dc23da08fb598fb9514f6cd1e339d588 /src
parent0e2ded049d6d5a39d18cf904e54c053355482e31 (diff)
parent1585981eece8658f9fb1e19ac93b74e0517b024c (diff)
Merge pull request #3927 from jroweboy/fix-bug
Frontend: Remove tracking for context wrapper
Diffstat (limited to 'src')
-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 {};