|
|
@@ -645,17 +645,10 @@ extension AnimatedImageView {
|
|
|
self.maxFrameCount = count
|
|
|
self.maxRepeatCount = repeatCount
|
|
|
self.preloadQueue = preloadQueue
|
|
|
-
|
|
|
- GraphicsContext.begin(size: imageSize, scale: imageScale)
|
|
|
}
|
|
|
|
|
|
deinit {
|
|
|
resetAnimatedFrames()
|
|
|
- // Sometimes the Animator instance may deallocate on a non-main thread.
|
|
|
- // Dispatch it to main thread if needed to avoid potential crashes.
|
|
|
- CallbackQueue.mainCurrentOrAsync.execute {
|
|
|
- GraphicsContext.end()
|
|
|
- }
|
|
|
}
|
|
|
|
|
|
/// Gets the image frame of a given index.
|
|
|
@@ -734,13 +727,12 @@ extension AnimatedImageView {
|
|
|
// To get a workaround, create another image ref and use that to create the final image. This leads to
|
|
|
// some performance loss, but there is little we can do.
|
|
|
// https://github.com/onevcat/Kingfisher/issues/1844
|
|
|
- guard let context = GraphicsContext.current(size: imageSize, scale: imageScale, inverting: true, cgImage: cgImage),
|
|
|
- let decodedImageRef = cgImage.decoded(on: context, scale: imageScale)
|
|
|
- else {
|
|
|
+ // https://github.com/onevcat/Kingfisher/pulls/2194
|
|
|
+ guard let unretainedImage = CGImage.create(ref: cgImage) else {
|
|
|
return KFCrossPlatformImage(cgImage: cgImage)
|
|
|
}
|
|
|
|
|
|
- return KFCrossPlatformImage(cgImage: decodedImageRef)
|
|
|
+ return KFCrossPlatformImage(cgImage: unretainedImage)
|
|
|
} else {
|
|
|
let image = KFCrossPlatformImage(cgImage: cgImage)
|
|
|
if backgroundDecode {
|