From 64f6bf45187a449986b5a5153abcc75ce987e9e0 Mon Sep 17 00:00:00 2001 From: Jesus Fernandez Date: Mon, 10 Sep 2018 18:44:30 +0200 Subject: Fix OpenGL context crash Task-number: QTBUG-70458 Change-Id: I00efefeb9f8c0bf245c77e68c285e596c60755e1 Reviewed-by: Liang Qi --- src/plugins/platforms/webgl/qwebglcontext.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/plugins/platforms/webgl/qwebglcontext.cpp b/src/plugins/platforms/webgl/qwebglcontext.cpp index cb56182..409b093 100644 --- a/src/plugins/platforms/webgl/qwebglcontext.cpp +++ b/src/plugins/platforms/webgl/qwebglcontext.cpp @@ -41,6 +41,7 @@ #include #include #include +#include #include #include #include @@ -1506,17 +1507,16 @@ bool QWebGLContext::makeCurrent(QPlatformSurface *surface) return false; } - auto context = QOpenGLContext::currentContext(); - Q_ASSERT(context); - auto handle = static_cast(context->handle()); - handle->d_func()->currentSurface = surface; + QOpenGLContextPrivate::setCurrentContext(context()); + d->currentSurface = surface; + auto event = createEvent(QStringLiteral("makeCurrent")); if (!event) return false; event->addInt(d->id); if (surface->surface()->surfaceClass() == QSurface::Window) { auto window = static_cast(surface); - if (s_contextData[handle->id()].cachedParameters.isEmpty()) { + if (s_contextData[id()].cachedParameters.isEmpty()) { auto future = window->d_func()->defaults.get_future(); std::future_status status = std::future_status::timeout; while (status == std::future_status::timeout) { @@ -1524,7 +1524,7 @@ bool QWebGLContext::makeCurrent(QPlatformSurface *surface) return false; status = future.wait_for(std::chrono::milliseconds(100)); } - s_contextData[handle->id()].cachedParameters = future.get(); + s_contextData[id()].cachedParameters = future.get(); } event->addInt(window->window()->width()); event->addInt(window->window()->height()); -- cgit v1.2.3