From 7cf7e884171555d13672ceed5ae34434054dd2d9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tor=20Arne=20Vestb=C3=B8?= Date: Mon, 8 May 2023 11:18:57 +0200 Subject: [PATCH] Darwin: Disable QMacAutoReleasePool tracker unless explicitly enabled There's a few orders of magnitude of overhead using QMacAutoReleasePool with the tracker enabled, so disable it even for debug builds, unless explicit auto release pool debugging has been enabled via the environment variable QT_DARWIN_DEBUG_AUTORELEASEPOOLS. Pick-to: 6.5 Change-Id: Iec00c703eb21e1914903954cfd02f9f6b1ec2a1f Reviewed-by: Timur Pocheptsov Reviewed-by: Edward Welbourne --- src/corelib/kernel/qcore_mac.mm | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/corelib/kernel/qcore_mac.mm b/src/corelib/kernel/qcore_mac.mm index 9ef0c0ad1b..d3bb2e7c4f 100644 --- a/src/corelib/kernel/qcore_mac.mm +++ b/src/corelib/kernel/qcore_mac.mm @@ -230,6 +230,10 @@ QMacAutoReleasePool::QMacAutoReleasePool() : pool([[NSAutoreleasePool alloc] init]) { #ifdef QT_DEBUG + static const bool debugAutoReleasePools = qEnvironmentVariableIsSet("QT_DARWIN_DEBUG_AUTORELEASEPOOLS"); + if (!debugAutoReleasePools) + return; + Class trackerClass = [QMacAutoReleasePoolTracker class]; void *poolFrame = nullptr;