Details
-
Bug
-
Resolution: Done
-
P3: Somewhat important
-
5.0.2
-
None
Description
Deferred delete events are not handled if they were posted from a glib event callback execution cycle.
loop level for event = loop level for current thread.
I believe the loop level should be incremented before calling g_main_context_iteration in QEventDispatcherGlib::processEvents.
QScopedLoopLevelCounter loopLevelCounter(threadData);
Test App supplied to reproduce the problem.
unzip and ./run
Attachments
Issue Links
- relates to
-
QTBUG-18434 QObject::deleteLater called from a function scheduled by g_idle_add --> QObject won't get deleted the next time the main loop spins
-
- Closed
-
- resulted in
-
QTBUG-120124 Improvements to deferred deletions / deleteLater()
-
- Open
-
For Gerrit Dashboard: QTBUG-32859 | ||||||
---|---|---|---|---|---|---|
# | Subject | Branch | Project | Status | CR | V |
142309,24 | Fix for deferredDelete() bug when calling the glib loop directly | dev | qt/qtbase | Status: MERGED | -2 | 0 |
149561,1 | Fix for deferredDelete() bug when calling the glib loop directly | 5.7 | qt/qtbase | Status: ABANDONED | 0 | 0 |
150527,3 | Fix warnings about constructor initialization order in tst_QObject. | 5.7 | qt/qtbase | Status: MERGED | +2 | 0 |