diff --git a/submodules/ChatListUI/Sources/Node/ChatListItem.swift b/submodules/ChatListUI/Sources/Node/ChatListItem.swift index f29befbd66..f8f9c90175 100644 --- a/submodules/ChatListUI/Sources/Node/ChatListItem.swift +++ b/submodules/ChatListUI/Sources/Node/ChatListItem.swift @@ -1306,6 +1306,10 @@ class ChatListItemNode: ItemListRevealOptionsItemNode { let (size, apply) = inputActivitiesLayout(CGSize(width: rawContentWidth - badgeSize, height: 40.0), item.presentationData, item.presentationData.theme.chatList.messageTextColor, item.index.messageIndex.id.peerId, inputActivities) inputActivitiesSize = size inputActivitiesApply = apply + } else { + let (size, apply) = inputActivitiesLayout(CGSize(width: rawContentWidth - badgeSize, height: 40.0), item.presentationData, item.presentationData.theme.chatList.messageTextColor, item.index.messageIndex.id.peerId, []) + inputActivitiesSize = size + inputActivitiesApply = apply } var online = false diff --git a/submodules/TelegramCore/Sources/RateCall.swift b/submodules/TelegramCore/Sources/RateCall.swift index 96967d9271..bac6cd7258 100644 --- a/submodules/TelegramCore/Sources/RateCall.swift +++ b/submodules/TelegramCore/Sources/RateCall.swift @@ -15,6 +15,9 @@ public func rateCall(account: Account, callId: CallId, starsCount: Int32, commen } public func saveCallDebugLog(network: Network, callId: CallId, log: String) -> Signal { + if log.count > 1024 * 16 { + return .complete() + } return network.request(Api.functions.phone.saveCallDebug(peer: Api.InputPhoneCall.inputPhoneCall(id: callId.id, accessHash: callId.accessHash), debug: .dataJSON(data: log))) |> `catch` { _ -> Signal in return .single(.boolFalse) diff --git a/submodules/TelegramVoip/Sources/OngoingCallContext.swift b/submodules/TelegramVoip/Sources/OngoingCallContext.swift index ffb9421c16..12a62c496f 100644 --- a/submodules/TelegramVoip/Sources/OngoingCallContext.swift +++ b/submodules/TelegramVoip/Sources/OngoingCallContext.swift @@ -717,6 +717,18 @@ public final class OngoingCallContext { } } + private func withContextThenDeallocate(_ f: @escaping (OngoingCallThreadLocalContextProtocol) -> Void) { + self.queue.async { + if let contextRef = self.contextRef { + let context = contextRef.takeUnretainedValue() + f(context.context) + + self.contextRef?.release() + self.contextRef = nil + } + } + } + public func beginTermination() { self.withContext { context in context.nativeBeginTermination() @@ -727,7 +739,7 @@ public final class OngoingCallContext { let account = self.account let logPath = self.logPath - self.withContext { context in + self.withContextThenDeallocate { context in context.nativeStop { debugLog, bytesSentWifi, bytesReceivedWifi, bytesSentMobile, bytesReceivedMobile in debugLogValue.set(.single(debugLog)) let delta = NetworkUsageStatsConnectionsEntry( diff --git a/submodules/TgVoipWebrtc/Sources/OngoingCallThreadLocalContext.mm b/submodules/TgVoipWebrtc/Sources/OngoingCallThreadLocalContext.mm index b4443770e0..f80aa70fbc 100644 --- a/submodules/TgVoipWebrtc/Sources/OngoingCallThreadLocalContext.mm +++ b/submodules/TgVoipWebrtc/Sources/OngoingCallThreadLocalContext.mm @@ -515,6 +515,10 @@ static void (*InternalVoipLoggingFunction)(NSString *) = NULL; } - (void)dealloc { + if (InternalVoipLoggingFunction) { + InternalVoipLoggingFunction(@"OngoingCallThreadLocalContext: dealloc"); + } + assert([_queue isCurrent]); if (_tgVoip != NULL) { [self stop:nil]; @@ -530,7 +534,7 @@ static void (*InternalVoipLoggingFunction)(NSString *) = NULL; return; } tgcalls::FinalState finalState = _tgVoip->stop(); - _tgVoip = nil; + _tgVoip.reset(); _terminationResult = [[OngoingCallThreadLocalContextWebrtcTerminationResult alloc] initWithFinalState:finalState]; } diff --git a/submodules/TgVoipWebrtc/tgcalls b/submodules/TgVoipWebrtc/tgcalls index 9e425c1fbd..44ec8cf45b 160000 --- a/submodules/TgVoipWebrtc/tgcalls +++ b/submodules/TgVoipWebrtc/tgcalls @@ -1 +1 @@ -Subproject commit 9e425c1fbd34e544f831a612608fce1da1c73200 +Subproject commit 44ec8cf45b267a0931bf52adb2d6a83f8aab3690