aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLaszlo Agocs <laszlo.agocs@digia.com>2014-07-01 11:36:33 +0200
committerLaszlo Agocs <laszlo.agocs@digia.com>2014-07-07 10:04:53 +0200
commit5494dc7bff733b03eebf73b3da2cff4142c9fc5f (patch)
tree56300abc40aae3409dc6dfe0e71aa59a108bf657
parent97cd2af9ac4c9b516ddf7ed19041041444b5f5e0 (diff)
Fix segfault on certain resize patterns in QQuickWidget
Resizing to an empty size followed by another resize leads to sync() without having the context and the render control intialized. This is wrong. Task-number: QTBUG-39858 Change-Id: I5908723272165a656d192644cceb16ed253e6d3b Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
-rw-r--r--src/quickwidgets/qquickwidget.cpp9
1 files changed, 8 insertions, 1 deletions
diff --git a/src/quickwidgets/qquickwidget.cpp b/src/quickwidgets/qquickwidget.cpp
index fc6d39e766..91f4ac4bb7 100644
--- a/src/quickwidgets/qquickwidget.cpp
+++ b/src/quickwidgets/qquickwidget.cpp
@@ -869,7 +869,7 @@ void QQuickWidget::resizeEvent(QResizeEvent *e)
d->fakeHidden = true;
return;
}
- if (d->fakeHidden) {
+ if (d->fakeHidden && d->context) {
//restart rendering
d->fakeHidden = false;
d->renderControl->sync();
@@ -887,7 +887,14 @@ void QQuickWidget::resizeEvent(QResizeEvent *e)
}
context->makeCurrent(d->offscreenSurface);
+
+ if (d->fakeHidden) {
+ d->fakeHidden = false;
+ d->renderControl->sync();
+ }
+
d->renderControl->render();
+
context->functions()->glFlush();
context->doneCurrent();
}