diff options
author | Laszlo Agocs <laszlo.agocs@digia.com> | 2014-07-01 11:36:33 +0200 |
---|---|---|
committer | Laszlo Agocs <laszlo.agocs@digia.com> | 2014-07-07 10:04:53 +0200 |
commit | 5494dc7bff733b03eebf73b3da2cff4142c9fc5f (patch) | |
tree | 56300abc40aae3409dc6dfe0e71aa59a108bf657 /src | |
parent | 97cd2af9ac4c9b516ddf7ed19041041444b5f5e0 (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>
Diffstat (limited to 'src')
-rw-r--r-- | src/quickwidgets/qquickwidget.cpp | 9 |
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(); } |