mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-12-22 22:25:57 +00:00
Add ability to asynchronously hold onto a resource to prevent removal while clearing cache
This commit is contained in:
@@ -287,6 +287,7 @@ final class FFMpegMediaFrameSourceContext: NSObject {
|
||||
|
||||
fileprivate var requestedDataOffset: Int?
|
||||
fileprivate let fetchedDataDisposable = MetaDisposable()
|
||||
fileprivate let keepDataDisposable = MetaDisposable()
|
||||
fileprivate let fetchedFullDataDisposable = MetaDisposable()
|
||||
fileprivate var requestedCompleteFetch = false
|
||||
|
||||
@@ -294,6 +295,7 @@ final class FFMpegMediaFrameSourceContext: NSObject {
|
||||
didSet {
|
||||
self.fetchedDataDisposable.dispose()
|
||||
self.fetchedFullDataDisposable.dispose()
|
||||
self.keepDataDisposable.dispose()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -316,6 +318,7 @@ final class FFMpegMediaFrameSourceContext: NSObject {
|
||||
|
||||
self.fetchedDataDisposable.dispose()
|
||||
self.fetchedFullDataDisposable.dispose()
|
||||
self.keepDataDisposable.dispose()
|
||||
}
|
||||
|
||||
func initializeState(postbox: Postbox, resourceReference: MediaResourceReference, tempFilePath: String?, streamable: Bool, video: Bool, preferSoftwareDecoding: Bool, fetchAutomatically: Bool, maximumFetchSize: Int?) {
|
||||
@@ -341,6 +344,10 @@ final class FFMpegMediaFrameSourceContext: NSObject {
|
||||
}
|
||||
}
|
||||
|
||||
if self.tempFilePath == nil {
|
||||
self.keepDataDisposable.set(postbox.mediaBox.keepResource(id: resourceReference.resource.id).start())
|
||||
}
|
||||
|
||||
if streamable {
|
||||
if self.tempFilePath == nil {
|
||||
self.fetchedDataDisposable.set(fetchedMediaResource(mediaBox: postbox.mediaBox, reference: resourceReference, range: (0 ..< Int(Int32.max), .elevated), statsCategory: self.statsCategory ?? .generic, preferBackgroundReferenceRevalidation: streamable).start())
|
||||
|
||||
Reference in New Issue
Block a user