From 5b4d6baf47283068fbe03f2eacd2ec34d0c20c2c Mon Sep 17 00:00:00 2001 From: Kuksgauzen <47536339+Kuksgauzen@users.noreply.github.com> Date: Tue, 21 Jul 2026 01:42:43 +0400 Subject: [PATCH] fix: wrap BackingScaleFactor in autoreleasepool to stop NSDictionary accumulation on macOS (#15623) Signed-off-by: Viktor Kuksgauzen --- src/platform/macos.mm | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/src/platform/macos.mm b/src/platform/macos.mm index 3303855a6..d4038da8e 100644 --- a/src/platform/macos.mm +++ b/src/platform/macos.mm @@ -118,16 +118,18 @@ extern "C" bool MacCheckAdminAuthorization() { // https://gist.github.com/briankc/025415e25900750f402235dbf1b74e42 extern "C" float BackingScaleFactor(uint32_t display) { - NSArray *screens = [NSScreen screens]; - for (NSScreen *screen in screens) { - NSDictionary *deviceDescription = [screen deviceDescription]; - NSNumber *screenNumber = [deviceDescription objectForKey:@"NSScreenNumber"]; - CGDirectDisplayID screenDisplayID = [screenNumber unsignedIntValue]; - if (screenDisplayID == display) { - return [screen backingScaleFactor]; + @autoreleasepool { + NSArray *screens = [NSScreen screens]; + for (NSScreen *screen in screens) { + NSDictionary *deviceDescription = [screen deviceDescription]; + NSNumber *screenNumber = [deviceDescription objectForKey:@"NSScreenNumber"]; + CGDirectDisplayID screenDisplayID = [screenNumber unsignedIntValue]; + if (screenDisplayID == display) { + return [screen backingScaleFactor]; + } } + return 1; } - return 1; } // https://github.com/jhford/screenresolution/blob/master/cg_utils.c