diff options
Diffstat (limited to 'src/quickwidgets')
-rw-r--r-- | src/quickwidgets/qquickwidget.cpp | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/src/quickwidgets/qquickwidget.cpp b/src/quickwidgets/qquickwidget.cpp index f9fbfeb8dc..4d2914ff6c 100644 --- a/src/quickwidgets/qquickwidget.cpp +++ b/src/quickwidgets/qquickwidget.cpp @@ -283,7 +283,16 @@ void QQuickWidgetPrivate::render(bool needsSync) Q_ASSERT(context); - if (!context->makeCurrent(offscreenSurface)) { + bool current = context->makeCurrent(offscreenSurface); + + if (!current && !context->isValid()) { + renderControl->invalidate(); + current = context->create() && context->makeCurrent(offscreenSurface); + if (current) + renderControl->initialize(context); + } + + if (!current) { qWarning("QQuickWidget: Cannot render due to failing makeCurrent()"); return; } |