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

Memory leak in qwidgetbackingstore_p.h appendDirtyOnScreenWidget when QT_NO_OPENGL is set

    XMLWordPrintable

Details

    • Bug
    • Resolution: Done
    • P2: Important
    • 5.6.0 RC
    • 5.4.0, 5.5.0
    • None
    • Win7 64bit
    • 462e537e0334838a9bf90735f9fd14e1b91fc987

    Description

      When creating native widgets before their parent is shown (the typical order), the backing store will mark the native widget as dirty with the following call hierarchy:

      > Qt5Widgets-vc120d.dll!QWidgetBackingStore::appendDirtyOnScreenWidget(QWidget * widget) Line 250 C++
      Qt5Widgets-vc120d.dll!QWidgetBackingStore::markDirtyOnScreen(const QRegion & region, QWidget * widget, const QPoint & topLevelOffset) Line 703 C++
      Qt5Widgets-vc120d.dll!QWidgetPrivate::drawWidget(QPaintDevice * pdev, const QRegion & rgn, const QPoint & offset, int flags, QPainter * sharedPainter, QWidgetBackingStore * backingStore) Line 5545 C++
      Qt5Widgets-vc120d.dll!QWidgetPrivate::paintSiblingsRecursive(QPaintDevice * pdev, const QList<QObject *> & siblings, int index, const QRegion & rgn, const QPoint & offset, int flags, QPainter * sharedPainter, QWidgetBackingStore * backingStore) Line 5733 C++
      Qt5Widgets-vc120d.dll!QWidgetPrivate::drawWidget(QPaintDevice * pdev, const QRegion & rgn, const QPoint & offset, int flags, QPainter * sharedPainter, QWidgetBackingStore * backingStore) Line 5591 C++
      Qt5Widgets-vc120d.dll!QWidgetBackingStore::doSync() Line 1238 C++
      Qt5Widgets-vc120d.dll!QWidgetBackingStore::sync(QWidget * exposedWidget, const QRegion & exposedRegion) Line 960 C++
      Qt5Widgets-vc120d.dll!QWidgetPrivate::syncBackingStore(const QRegion & region) Line 1897 C++
      Qt5Widgets-vc120d.dll!QWidgetWindow::handleExposeEvent(QExposeEvent * event) Line 773 C++
      Qt5Widgets-vc120d.dll!QWidgetWindow::event(QEvent * event) Line 219 C++
      Qt5Widgets-vc120d.dll!QApplicationPrivate::notify_helper(QObject * receiver, QEvent * e) Line 3722 C++
      Qt5Widgets-vc120d.dll!QApplication::notify(QObject * receiver, QEvent * e) Line 3164 C++

      However, the member dirtyOnScreenWidgets is only cleaned up in the destructor of QWidgetBackingStore if QT_NO_OPENGL is not defined.

      Attachments

        For Gerrit Dashboard: QTBUG-47499
        # Subject Branch Project Status CR V

        Activity

          People

            mmutz Marc Mutz
            jam Jakob Magiera
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Gerrit Reviews

                There are no open Gerrit changes