From 9294c8c695554c94800cb68066c9b02729a3d300 Mon Sep 17 00:00:00 2001 From: John Preston Date: Fri, 11 Jun 2021 17:22:55 +0400 Subject: [PATCH] Fix custom OpenGL renderers on macOS. --- ui/gl/gl_surface.cpp | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/ui/gl/gl_surface.cpp b/ui/gl/gl_surface.cpp index 87ffa29..b42aa54 100644 --- a/ui/gl/gl_surface.cpp +++ b/ui/gl/gl_surface.cpp @@ -12,6 +12,7 @@ #include #include #include +#include #include namespace Ui::GL { @@ -82,7 +83,14 @@ void SurfaceOpenGL::paintEvent(QPaintEvent *e) { if (!updatesEnabled() || size().isEmpty() || !isValid()) { return; } - makeCurrent(); + auto redirectOffset = QPoint(); + const auto rpd = redirected(&redirectOffset); + const auto device = rpd ? rpd : static_cast(this); + const auto engine = device->paintEngine(); + if (!engine) { + return; + } + engine->begin(device); const auto f = context()->functions(); if (const auto bg = _renderer->clearColor()) { f->glClearColor(bg->redF(), bg->greenF(), bg->blueF(), bg->alphaF()); @@ -94,6 +102,7 @@ void SurfaceOpenGL::paintEvent(QPaintEvent *e) { width() * devicePixelRatio(), height() * devicePixelRatio()); _renderer->paint(this, *f); + engine->end(); } void SurfaceOpenGL::callDeInit() {