Details
-
Bug
-
Resolution: Incomplete
-
P3: Somewhat important
-
None
-
5.9.1
-
None
Description
Switching from QGLWidget to QOpenGLWidget. It was found in debugger that paintGL called from resizeEvent. Compare two functions below copied from Qt5.9.1 source tree. This cause problem - paintGL may be unexpectedly called when scene data is not ready for render.
void QGLWidget::resizeEvent(QResizeEvent *e) { Q_D(QGLWidget); QWidget::resizeEvent(e); if (!isValid()) return; makeCurrent(); if (!d->glcx->initialized()) glInit(); const qreal scaleFactor = (window() && window()->windowHandle()) ? window()->windowHandle()->devicePixelRatio() : 1.0; resizeGL(width() * scaleFactor, height() * scaleFactor); } void QOpenGLWidget::resizeEvent(QResizeEvent *e) { Q_D(QOpenGLWidget); if (e->size().isEmpty()) { d->fakeHidden = true; return; } d->fakeHidden = false; d->initialize(); if (!d->initialized) return; d->recreateFbo(); resizeGL(width(), height()); d->sendPaintEvent(QRect(QPoint(0, 0), size())); }