From b98b09cba99cdc1f7529ccedbb740b9c4ef0dcab Mon Sep 17 00:00:00 2001 From: mertalev <101130780+mertalev@users.noreply.github.com> Date: Fri, 23 Jan 2026 16:41:07 -0500 Subject: [PATCH] fix disposal --- mobile/ios/Runner/Images/RemoteImagesImpl.swift | 5 ++--- .../lib/infrastructure/loaders/image_request.dart | 13 +++++++------ 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/mobile/ios/Runner/Images/RemoteImagesImpl.swift b/mobile/ios/Runner/Images/RemoteImagesImpl.swift index 36baf4bc74..5c242e18a9 100644 --- a/mobile/ios/Runner/Images/RemoteImagesImpl.swift +++ b/mobile/ios/Runner/Images/RemoteImagesImpl.swift @@ -20,9 +20,8 @@ class RemoteImageRequest { class RemoteImageApiImpl: NSObject, RemoteImageApi { private static let delegate = RemoteImageApiDelegate() - static let cacheDir = FileManager.default.temporaryDirectory.appendingPathComponent( - "thumbnails", isDirectory: true) static let session = { + let cacheDir = FileManager.default.temporaryDirectory.appendingPathComponent("thumbnails", isDirectory: true) let config = URLSessionConfiguration.default let version = Bundle.main.object(forInfoDictionaryKey: "CFBundleShortVersionString") as? String ?? "unknown" config.httpAdditionalHeaders = ["User-Agent": "Immich_iOS_\(version)"] @@ -32,7 +31,7 @@ class RemoteImageApiImpl: NSObject, RemoteImageApi { diskCapacity: 1 << 30, directory: cacheDir ) - config.httpMaximumConnectionsPerHost = 16 + config.httpMaximumConnectionsPerHost = 64 return URLSession(configuration: config, delegate: delegate, delegateQueue: nil) }() diff --git a/mobile/lib/infrastructure/loaders/image_request.dart b/mobile/lib/infrastructure/loaders/image_request.dart index b0f641431b..5be7b57835 100644 --- a/mobile/lib/infrastructure/loaders/image_request.dart +++ b/mobile/lib/infrastructure/loaders/image_request.dart @@ -54,21 +54,21 @@ abstract class ImageRequest { } final descriptor = await ui.ImageDescriptor.encoded(buffer); + buffer.dispose(); if (_isCancelled) { - buffer.dispose(); descriptor.dispose(); return null; } final codec = await descriptor.instantiateCodec(); - buffer.dispose(); - descriptor.dispose(); if (_isCancelled) { + descriptor.dispose(); codec.dispose(); return null; } final frame = await codec.getNextFrame(); + descriptor.dispose(); codec.dispose(); if (_isCancelled) { frame.image.dispose(); @@ -105,16 +105,17 @@ abstract class ImageRequest { rowBytes: rowBytes, pixelFormat: ui.PixelFormat.rgba8888, ); - final codec = await descriptor.instantiateCodec(); - buffer.dispose(); - descriptor.dispose(); + + final codec = await descriptor.instantiateCodec(); if (_isCancelled) { + descriptor.dispose(); codec.dispose(); return null; } final frame = await codec.getNextFrame(); + descriptor.dispose(); codec.dispose(); if (_isCancelled) { frame.image.dispose();