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();