Merge pull request #3927 from jroweboy/fix-bug
Frontend: Remove tracking for context wrapper
This commit is contained in:
commit
024c84d2db
|
@ -150,18 +150,19 @@ public:
|
||||||
}
|
}
|
||||||
|
|
||||||
void MakeCurrent() override {
|
void MakeCurrent() override {
|
||||||
if (is_current) {
|
// We can't track the current state of the underlying context in this wrapper class because
|
||||||
return;
|
// 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 {
|
void DoneCurrent() override {
|
||||||
if (!is_current) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
context->doneCurrent();
|
context->doneCurrent();
|
||||||
is_current = false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
QOpenGLContext* GetShareContext() {
|
QOpenGLContext* GetShareContext() {
|
||||||
|
@ -178,7 +179,6 @@ private:
|
||||||
std::unique_ptr<QOpenGLContext> context;
|
std::unique_ptr<QOpenGLContext> context;
|
||||||
std::unique_ptr<QOffscreenSurface> offscreen_surface{};
|
std::unique_ptr<QOffscreenSurface> offscreen_surface{};
|
||||||
QSurface* surface;
|
QSurface* surface;
|
||||||
bool is_current = false;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
class DummyContext : public Core::Frontend::GraphicsContext {};
|
class DummyContext : public Core::Frontend::GraphicsContext {};
|
||||||
|
|
Loading…
Reference in New Issue