|
|
|
@ -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 {};
|
|
|
|
|