From ed70faf87af42dea290853730093b3c2ecb90b0e Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Fri, 26 Apr 2024 21:51:13 -0700 Subject: [PATCH] QCoreApplication: make removeNativeEventFilter() remove from main thread installNativeEventFilter() always installs on the main thread, so match it. [ChangeLog][QtCore][QCoreApplication] Fixed a mismatch on which event dispatcher was modified between installNativeEventFilter() and removeNativeEventFilter(). Now both functions in QCoreApplication access the main thread's event dispatcher. To access the current thread's dispatcher, use QAbstractEventDispatcher's functions. Fixes: QTBUG-124783 Pick-to: 6.5 6.7 Change-Id: I6979d02a7395405cbf23fffd17ca09e1ac43f1f3 Reviewed-by: David Faure --- src/corelib/kernel/qcoreapplication.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/corelib/kernel/qcoreapplication.cpp b/src/corelib/kernel/qcoreapplication.cpp index bd00f69c1c..a494369c5d 100644 --- a/src/corelib/kernel/qcoreapplication.cpp +++ b/src/corelib/kernel/qcoreapplication.cpp @@ -3251,7 +3251,7 @@ void QCoreApplication::installNativeEventFilter(QAbstractNativeEventFilter *filt */ void QCoreApplication::removeNativeEventFilter(QAbstractNativeEventFilter *filterObject) { - QAbstractEventDispatcher *eventDispatcher = QAbstractEventDispatcher::instance(); + QAbstractEventDispatcher *eventDispatcher = QAbstractEventDispatcher::instance(QCoreApplicationPrivate::theMainThread.loadAcquire()); if (!filterObject || !eventDispatcher) return; eventDispatcher->removeNativeEventFilter(filterObject);