This commit is contained in:
mertalev 2025-09-11 14:41:01 -04:00
parent 188dcbf7d0
commit 9ccd98d871
No known key found for this signature in database
GPG key ID: DF6ABC77AAD98C95

View file

@ -17,7 +17,7 @@ class AssetResolver {
private static var batchTimer: DispatchWorkItem? private static var batchTimer: DispatchWorkItem?
private static let batchLock = NSLock() private static let batchLock = NSLock()
private static let batchTimeout: TimeInterval = 0.001 // 1ms private static let batchTimeout: TimeInterval = 0.00025 // 250μs
private static let fetchOptions = { private static let fetchOptions = {
let fetchOptions = PHFetchOptions() let fetchOptions = PHFetchOptions()
@ -35,6 +35,7 @@ class AssetResolver {
requestQueue.async { requestQueue.async {
if (request.isCancelled) { if (request.isCancelled) {
request.completion(nil) request.completion(nil)
return
} }
if let cachedAsset = assetCache.object(forKey: request.assetId as NSString) { if let cachedAsset = assetCache.object(forKey: request.assetId as NSString) {
@ -55,13 +56,17 @@ class AssetResolver {
let timer = DispatchWorkItem(block: processBatch) let timer = DispatchWorkItem(block: processBatch)
batchTimer = timer batchTimer = timer
batchLock.unlock() batchLock.unlock()
processingQueue.asyncAfter(deadline: .now() + batchTimeout, execute: timer) processingQueue.asyncAfter(deadline: .now() + batchTimeout, execute: timer)
} }
} }
private static func processBatch() { private static func processBatch() {
batchLock.lock() batchLock.lock()
if assetRequests.isEmpty {
batchLock.unlock()
return
}
var completionMap = [String: [(PHAsset?) -> Void]]() var completionMap = [String: [(PHAsset?) -> Void]]()
var activeAssetIds = [String]() var activeAssetIds = [String]()
completionMap.reserveCapacity(assetRequests.count) completionMap.reserveCapacity(assetRequests.count)