Bladeren bron

Fix stack overflow regression with ImagePrefetcher

Albert Tong 6 jaren geleden
bovenliggende
commit
7ac3623327
1 gewijzigde bestanden met toevoegingen van 8 en 6 verwijderingen
  1. 8 6
      Sources/Networking/ImagePrefetcher.swift

+ 8 - 6
Sources/Networking/ImagePrefetcher.swift

@@ -310,17 +310,19 @@ public class ImagePrefetcher {
     }
     }
     
     
     func reportCompletionOrStartNext() {
     func reportCompletionOrStartNext() {
-        if let resource = self.pendingSources.popFirst() {
-            startPrefetching(resource)
-        } else {
-            guard tasks.isEmpty else { return }
-            handleComplete()
+        CallbackQueue.mainAsync.execute {
+            if let resource = self.pendingSources.popFirst() {
+                self.startPrefetching(resource)
+            } else {
+                guard self.tasks.isEmpty else { return }
+                self.handleComplete()
+            }
         }
         }
     }
     }
     
     
     func handleComplete() {
     func handleComplete() {
         // The completion handler should be called on the main thread
         // The completion handler should be called on the main thread
-        DispatchQueue.main.safeAsync {
+        CallbackQueue.mainCurrentOrAsync.execute {
             self.completionSourceHandler?(self.skippedSources, self.failedSources, self.completedSources)
             self.completionSourceHandler?(self.skippedSources, self.failedSources, self.completedSources)
             self.completionHandler?(
             self.completionHandler?(
                 self.skippedSources.compactMap { $0.asResource },
                 self.skippedSources.compactMap { $0.asResource },