-
Bug
-
Resolution: Incomplete
-
P3: Somewhat important
-
None
-
5.9.1
-
None
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()));
}