From 4ef2988aedff9d1b36fd366675e137fc606e8ddb Mon Sep 17 00:00:00 2001 From: John Stanley Date: Fri, 10 Feb 2012 16:34:29 -0500 Subject: Raise loopLevel for deleteLater in event filters Change-Id: Ibd0cd2a2efbcb13a54fe8ba055e7243c0c01b26e Reviewed-by: Bradley T. Hughes --- src/corelib/kernel/qabstracteventdispatcher.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'src/corelib/kernel/qabstracteventdispatcher.cpp') diff --git a/src/corelib/kernel/qabstracteventdispatcher.cpp b/src/corelib/kernel/qabstracteventdispatcher.cpp index 0348faf1f2..3075eab753 100644 --- a/src/corelib/kernel/qabstracteventdispatcher.cpp +++ b/src/corelib/kernel/qabstracteventdispatcher.cpp @@ -413,8 +413,12 @@ QAbstractEventDispatcher::EventFilter QAbstractEventDispatcher::setEventFilter(E bool QAbstractEventDispatcher::filterEvent(void *message) { Q_D(QAbstractEventDispatcher); - if (d->event_filter) + if (d->event_filter) { + // Raise the loopLevel so that deleteLater() calls in or triggered + // by event_filter() will be processed from the main event loop. + QScopedLoopLevelCounter loopLevelCounter(d->threadData); return d->event_filter(message); + } return false; } -- cgit v1.2.3