From 99b89d30fa5484c5d1f3cbda828648c28af4fb7d Mon Sep 17 00:00:00 2001 From: Erik Verbruggen Date: Fri, 12 Jan 2018 12:19:20 +0100 Subject: Prevent O(n^2) behavior when calling QObject::deleteLater When a deleteLater event is queued, a check if done if the same event for the same receiver is queued before by scanning all pending events. This leads to quadratic behavior, which is quite noticeable. By using an unused bit in QObjectData, this can be prevented. Now the duplicate event scanning in QCoreApplication is only done for the quit event. Task-number: QTBUG-65712 Change-Id: Ie505acbbec802f91ebd0b94ac067e362c2476113 Reviewed-by: Erik Verbruggen Reviewed-by: Simon Hausmann Reviewed-by: Lars Knoll --- src/corelib/kernel/qobject.cpp | 1 + 1 file changed, 1 insertion(+) (limited to 'src/corelib/kernel/qobject.cpp') diff --git a/src/corelib/kernel/qobject.cpp b/src/corelib/kernel/qobject.cpp index 086b8a51ba..57711389c4 100644 --- a/src/corelib/kernel/qobject.cpp +++ b/src/corelib/kernel/qobject.cpp @@ -230,6 +230,7 @@ QObjectPrivate::QObjectPrivate(int version) connectedSignals[0] = connectedSignals[1] = 0; metaObject = 0; isWindow = false; + deleteLaterCalled = false; } QObjectPrivate::~QObjectPrivate() -- cgit v1.2.3