Uploaded image for project: 'Qt'
  1. Qt
  2. QTBUG-63553

QOpenGLWidget call paintGL within resizeEvent

    XMLWordPrintable

Details

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

       

      Attachments

        No reviews matched the request. Check your Options in the drop-down menu of this sections header.

        Activity

          People

            lagocs Laszlo Agocs
            bialk bialk
            Votes:
            0 Vote for this issue
            Watchers:
            5 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Gerrit Reviews

                There are no open Gerrit changes