fix disposal

This commit is contained in:
mertalev
2026-01-23 16:41:07 -05:00
parent 40dd94d10d
commit b98b09cba9
2 changed files with 9 additions and 9 deletions
@@ -20,9 +20,8 @@ class RemoteImageRequest {
class RemoteImageApiImpl: NSObject, RemoteImageApi { class RemoteImageApiImpl: NSObject, RemoteImageApi {
private static let delegate = RemoteImageApiDelegate() private static let delegate = RemoteImageApiDelegate()
static let cacheDir = FileManager.default.temporaryDirectory.appendingPathComponent(
"thumbnails", isDirectory: true)
static let session = { static let session = {
let cacheDir = FileManager.default.temporaryDirectory.appendingPathComponent("thumbnails", isDirectory: true)
let config = URLSessionConfiguration.default let config = URLSessionConfiguration.default
let version = Bundle.main.object(forInfoDictionaryKey: "CFBundleShortVersionString") as? String ?? "unknown" let version = Bundle.main.object(forInfoDictionaryKey: "CFBundleShortVersionString") as? String ?? "unknown"
config.httpAdditionalHeaders = ["User-Agent": "Immich_iOS_\(version)"] config.httpAdditionalHeaders = ["User-Agent": "Immich_iOS_\(version)"]
@@ -32,7 +31,7 @@ class RemoteImageApiImpl: NSObject, RemoteImageApi {
diskCapacity: 1 << 30, diskCapacity: 1 << 30,
directory: cacheDir directory: cacheDir
) )
config.httpMaximumConnectionsPerHost = 16 config.httpMaximumConnectionsPerHost = 64
return URLSession(configuration: config, delegate: delegate, delegateQueue: nil) return URLSession(configuration: config, delegate: delegate, delegateQueue: nil)
}() }()
@@ -54,21 +54,21 @@ abstract class ImageRequest {
} }
final descriptor = await ui.ImageDescriptor.encoded(buffer); final descriptor = await ui.ImageDescriptor.encoded(buffer);
buffer.dispose();
if (_isCancelled) { if (_isCancelled) {
buffer.dispose();
descriptor.dispose(); descriptor.dispose();
return null; return null;
} }
final codec = await descriptor.instantiateCodec(); final codec = await descriptor.instantiateCodec();
buffer.dispose();
descriptor.dispose();
if (_isCancelled) { if (_isCancelled) {
descriptor.dispose();
codec.dispose(); codec.dispose();
return null; return null;
} }
final frame = await codec.getNextFrame(); final frame = await codec.getNextFrame();
descriptor.dispose();
codec.dispose(); codec.dispose();
if (_isCancelled) { if (_isCancelled) {
frame.image.dispose(); frame.image.dispose();
@@ -105,16 +105,17 @@ abstract class ImageRequest {
rowBytes: rowBytes, rowBytes: rowBytes,
pixelFormat: ui.PixelFormat.rgba8888, pixelFormat: ui.PixelFormat.rgba8888,
); );
final codec = await descriptor.instantiateCodec();
buffer.dispose(); buffer.dispose();
descriptor.dispose();
final codec = await descriptor.instantiateCodec();
if (_isCancelled) { if (_isCancelled) {
descriptor.dispose();
codec.dispose(); codec.dispose();
return null; return null;
} }
final frame = await codec.getNextFrame(); final frame = await codec.getNextFrame();
descriptor.dispose();
codec.dispose(); codec.dispose();
if (_isCancelled) { if (_isCancelled) {
frame.image.dispose(); frame.image.dispose();