mirror of
https://github.com/TelegramMessenger/Telegram-iOS.git
synced 2026-07-06 03:33:41 +02:00
Memory leak fixes
This commit is contained in:
parent
29057102ed
commit
709bcd548c
5 changed files with 29 additions and 20 deletions
|
|
@ -376,7 +376,7 @@
|
|||
__strong ASEditableTextNode *strongSelf = weakSelf;
|
||||
if (strongSelf != nil) {
|
||||
if ([strongSelf->_delegate respondsToSelector:@selector(editableTextNodeShouldCopy:)]) {
|
||||
return [strongSelf->_delegate editableTextNodeShouldCopy:self];
|
||||
return [strongSelf->_delegate editableTextNodeShouldCopy:strongSelf];
|
||||
}
|
||||
}
|
||||
return true;
|
||||
|
|
@ -385,7 +385,7 @@
|
|||
__strong ASEditableTextNode *strongSelf = weakSelf;
|
||||
if (strongSelf != nil) {
|
||||
if ([strongSelf->_delegate respondsToSelector:@selector(editableTextNodeShouldPaste:)]) {
|
||||
return [strongSelf->_delegate editableTextNodeShouldPaste:self];
|
||||
return [strongSelf->_delegate editableTextNodeShouldPaste:strongSelf];
|
||||
}
|
||||
}
|
||||
return true;
|
||||
|
|
|
|||
|
|
@ -1074,6 +1074,8 @@ final class ChatListSearchListPaneNode: ASDisplayNode, ChatListSearchPaneNode {
|
|||
}
|
||||
|
||||
private var hiddenMediaDisposable: Disposable?
|
||||
private var searchQueryDisposable: Disposable?
|
||||
private var searchOptionsDisposable: Disposable?
|
||||
|
||||
init(context: AccountContext, animationCache: AnimationCache, animationRenderer: MultiAnimationRenderer, updatedPresentationData: (initial: PresentationData, signal: Signal<PresentationData, NoError>)? = nil, interaction: ChatListSearchInteraction, key: ChatListSearchPaneKey, peersFilter: ChatListNodePeersFilter, requestPeerType: [ReplyMarkupButtonRequestPeerType]?, location: ChatListControllerLocation, searchQuery: Signal<String?, NoError>, searchOptions: Signal<ChatListSearchOptions?, NoError>, navigationController: NavigationController?) {
|
||||
self.context = context
|
||||
|
|
@ -2324,15 +2326,15 @@ final class ChatListSearchListPaneNode: ASDisplayNode, ChatListSearchPaneNode {
|
|||
let previousSelectedMessages = Atomic<Set<EngineMessage.Id>?>(value: nil)
|
||||
let previousExpandGlobalSearch = Atomic<Bool>(value: false)
|
||||
|
||||
let _ = (searchQuery
|
||||
|> deliverOnMainQueue).startStandalone(next: { [weak self, weak listInteraction, weak chatListInteraction] query in
|
||||
self.searchQueryDisposable = (searchQuery
|
||||
|> deliverOnMainQueue).startStrict(next: { [weak self, weak listInteraction, weak chatListInteraction] query in
|
||||
self?.searchQueryValue = query
|
||||
listInteraction?.searchTextHighightState = query
|
||||
chatListInteraction?.searchTextHighightState = query
|
||||
})
|
||||
|
||||
let _ = (searchOptions
|
||||
|> deliverOnMainQueue).startStandalone(next: { [weak self] options in
|
||||
self.searchOptionsDisposable = (searchOptions
|
||||
|> deliverOnMainQueue).startStrict(next: { [weak self] options in
|
||||
self?.searchOptionsValue = options
|
||||
})
|
||||
|
||||
|
|
@ -2682,6 +2684,7 @@ final class ChatListSearchListPaneNode: ASDisplayNode, ChatListSearchPaneNode {
|
|||
}
|
||||
|
||||
if [.file, .music, .voiceOrInstantVideo].contains(tagMask) || self.key == .downloads {
|
||||
let key = self.key
|
||||
self.mediaStatusDisposable = (context.sharedContext.mediaManager.globalMediaPlayerState
|
||||
|> mapToSignal { playlistStateAndType -> Signal<(Account, SharedMediaPlayerItemPlaybackState, MediaManagerPlayerType)?, NoError> in
|
||||
if let (account, state, type) = playlistStateAndType {
|
||||
|
|
@ -2694,7 +2697,7 @@ final class ChatListSearchListPaneNode: ASDisplayNode, ChatListSearchPaneNode {
|
|||
return .single(nil) |> delay(0.2, queue: .mainQueue())
|
||||
}
|
||||
case .music:
|
||||
if tagMask != .music && self.key != .downloads {
|
||||
if tagMask != .music && key != .downloads {
|
||||
return .single(nil) |> delay(0.2, queue: .mainQueue())
|
||||
}
|
||||
case .file:
|
||||
|
|
@ -2714,26 +2717,26 @@ final class ChatListSearchListPaneNode: ASDisplayNode, ChatListSearchPaneNode {
|
|||
}
|
||||
}
|
||||
|> deliverOnMainQueue).startStrict(next: { [weak self] playlistStateAndType in
|
||||
guard let strongSelf = self else {
|
||||
guard let self else {
|
||||
return
|
||||
}
|
||||
if !arePlaylistItemsEqual(strongSelf.playlistStateAndType?.0, playlistStateAndType?.1.item) ||
|
||||
!arePlaylistItemsEqual(strongSelf.playlistStateAndType?.1, playlistStateAndType?.1.previousItem) ||
|
||||
!arePlaylistItemsEqual(strongSelf.playlistStateAndType?.2, playlistStateAndType?.1.nextItem) ||
|
||||
strongSelf.playlistStateAndType?.3 != playlistStateAndType?.1.order || strongSelf.playlistStateAndType?.4 != playlistStateAndType?.2 {
|
||||
if !arePlaylistItemsEqual(self.playlistStateAndType?.0, playlistStateAndType?.1.item) ||
|
||||
!arePlaylistItemsEqual(self.playlistStateAndType?.1, playlistStateAndType?.1.previousItem) ||
|
||||
!arePlaylistItemsEqual(self.playlistStateAndType?.2, playlistStateAndType?.1.nextItem) ||
|
||||
self.playlistStateAndType?.3 != playlistStateAndType?.1.order || self.playlistStateAndType?.4 != playlistStateAndType?.2 {
|
||||
|
||||
if let playlistStateAndType = playlistStateAndType {
|
||||
strongSelf.playlistStateAndType = (playlistStateAndType.1.item, playlistStateAndType.1.previousItem, playlistStateAndType.1.nextItem, playlistStateAndType.1.order, playlistStateAndType.2, playlistStateAndType.0)
|
||||
self.playlistStateAndType = (playlistStateAndType.1.item, playlistStateAndType.1.previousItem, playlistStateAndType.1.nextItem, playlistStateAndType.1.order, playlistStateAndType.2, playlistStateAndType.0)
|
||||
} else {
|
||||
strongSelf.playlistStateAndType = nil
|
||||
self.playlistStateAndType = nil
|
||||
}
|
||||
|
||||
if let (size, sideInset, bottomInset, visibleHeight, presentationData) = strongSelf.currentParams {
|
||||
strongSelf.update(size: size, sideInset: sideInset, bottomInset: bottomInset, visibleHeight: visibleHeight, presentationData: presentationData, synchronous: true, transition: .animated(duration: 0.4, curve: .spring))
|
||||
if let (size, sideInset, bottomInset, visibleHeight, presentationData) = self.currentParams {
|
||||
self.update(size: size, sideInset: sideInset, bottomInset: bottomInset, visibleHeight: visibleHeight, presentationData: presentationData, synchronous: true, transition: .animated(duration: 0.4, curve: .spring))
|
||||
}
|
||||
}
|
||||
strongSelf.playlistLocation = playlistStateAndType?.1.playlistLocation
|
||||
}).strict()
|
||||
self.playlistLocation = playlistStateAndType?.1.playlistLocation
|
||||
})
|
||||
}
|
||||
|
||||
self.deletedMessagesDisposable = (context.account.stateManager.deletedMessages
|
||||
|
|
@ -2770,6 +2773,8 @@ final class ChatListSearchListPaneNode: ASDisplayNode, ChatListSearchPaneNode {
|
|||
self.recentDisposable.dispose()
|
||||
self.updatedRecentPeersDisposable.dispose()
|
||||
self.deletedMessagesDisposable?.dispose()
|
||||
self.searchQueryDisposable?.dispose()
|
||||
self.searchOptionsDisposable?.dispose()
|
||||
}
|
||||
|
||||
override func didLoad() {
|
||||
|
|
|
|||
|
|
@ -1236,7 +1236,7 @@ extension UIBezierPath {
|
|||
}
|
||||
|
||||
private func generateMaskImage(size: CGSize, recognitions: [RecognizedContent]) -> UIImage? {
|
||||
return generateImage(size, opaque: false, rotatedContext: { size, c in
|
||||
return generateImage(size, opaque: false, scale: 1.0, rotatedContext: { size, c in
|
||||
let bounds = CGRect(origin: CGPoint(), size: size)
|
||||
c.clear(bounds)
|
||||
|
||||
|
|
|
|||
|
|
@ -151,6 +151,10 @@ public final class HorizontalPeerItemNode: ListViewItemNode {
|
|||
}
|
||||
}
|
||||
|
||||
deinit {
|
||||
assert(true)
|
||||
}
|
||||
|
||||
override public func didLoad() {
|
||||
super.didLoad()
|
||||
|
||||
|
|
|
|||
|
|
@ -1513,7 +1513,7 @@ private func extractAccountManagerState(records: AccountRecordsView<TelegramAcco
|
|||
}
|
||||
|
||||
if !buildConfig.isAppStoreBuild {
|
||||
if value >= 800 * 1024 * 1024 {
|
||||
if value >= 2000 * 1024 * 1024 {
|
||||
if self.contextValue?.context.sharedContext.immediateExperimentalUISettings.crashOnMemoryPressure == true {
|
||||
preconditionFailure()
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue