Fix more leaks

This commit is contained in:
Ali 2023-09-29 18:20:53 +04:00
parent c55bbe6be3
commit b2036845f0
4 changed files with 32 additions and 16 deletions

View File

@ -20,7 +20,7 @@
- (void)dealloc {
if (_impl) {
av_frame_unref(_impl);
av_frame_free(&_impl);
}
}

View File

@ -98,13 +98,13 @@ static void MTNetworkAvailabilityContextRelease(const void *info)
MTTimer *timer = _timer;
_timer = nil;
[[MTNetworkAvailability networkAvailabilityQueue] dispatchOnQueue:^
{
[timer invalidate];
SCNetworkReachabilitySetCallback(reachability, NULL, NULL);
SCNetworkReachabilitySetDispatchQueue(reachability, NULL);
}];
[[MTNetworkAvailability networkAvailabilityQueue] dispatchOnQueue:^{
[timer invalidate];
SCNetworkReachabilitySetCallback(reachability, NULL, NULL);
SCNetworkReachabilitySetDispatchQueue(reachability, NULL);
CFRelease(reachability);
}];
}
+ (MTQueue *)networkAvailabilityQueue

View File

@ -270,7 +270,7 @@ public final class MediaStreamComponent: CombinedComponent {
let moreButtonTag = local.moreButtonTag
let moreAnimationTag = local.moreAnimationTag
func makeBody() -> CGSize {
let makeBody: () -> CGSize = { [weak local] in
let canEnforceOrientation = UIDevice.current.model != "iPad"
var forceFullScreenInLandscape: Bool { canEnforceOrientation && true }
let environment = context.environment[ViewControllerComponentContainer.Environment.self].value
@ -289,13 +289,20 @@ public final class MediaStreamComponent: CombinedComponent {
let state = context.state
let controller = environment.controller
context.state.deactivatePictureInPictureIfVisible.connect {
context.state.deactivatePictureInPictureIfVisible.connect { [weak state] in
guard let controller = controller(), controller.view.window != nil else {
return
}
guard let state else {
return
}
state.updated(transition: .easeInOut(duration: 3))
deactivatePictureInPicture.invoke(Void())
guard let local else {
return
}
local.deactivatePictureInPicture.invoke(Void())
}
let isFullscreen: Bool
let isLandscape = context.availableSize.width > context.availableSize.height
@ -347,8 +354,7 @@ public final class MediaStreamComponent: CombinedComponent {
availableSize: CGSize(width: context.availableSize.width, height: dismissTapAreaHeight),
transition: context.transition
)
// (controller() as? MediaStreamComponentController)?.prefersOnScreenNavigationHidden = isFullscreen
// (controller() as? MediaStreamComponentController)?.window?.invalidatePrefersOnScreenNavigationHidden()
let video = video.update(
component: MediaStreamVideoComponent(
call: context.component.call,
@ -832,6 +838,8 @@ public final class MediaStreamComponent: CombinedComponent {
UIColor(red: 0.314, green: 0.161, blue: 0.197, alpha: 1).cgColor
],
image: generateImage(CGSize(width: 44.0 * imageRenderScale, height: 44 * imageRenderScale), opaque: false, rotatedContext: { size, context in
context.clear(CGRect(origin: CGPoint(), size: size))
context.translateBy(x: size.width / 2, y: size.height / 2)
context.scaleBy(x: 0.4, y: 0.4)
context.translateBy(x: -size.width / 2, y: -size.height / 2)

View File

@ -753,12 +753,18 @@ public final class PresentationCallManagerImpl: PresentationCallManager {
public func joinGroupCall(context: AccountContext, peerId: PeerId, invite: String?, requestJoinAsPeerId: ((@escaping (PeerId?) -> Void) -> Void)?, initialCall: EngineGroupCallDescription, endCurrentIfAny: Bool) -> JoinGroupCallManagerResult {
let begin: () -> Void = { [weak self] in
if let requestJoinAsPeerId = requestJoinAsPeerId {
if let requestJoinAsPeerId = requestJoinAsPeerId, (initialCall.isStream == nil || initialCall.isStream == false) {
requestJoinAsPeerId({ joinAsPeerId in
let _ = self?.startGroupCall(accountContext: context, peerId: peerId, invite: invite, joinAsPeerId: joinAsPeerId, initialCall: initialCall).start()
guard let self else {
return
}
self.startCallDisposable.set(self.startGroupCall(accountContext: context, peerId: peerId, invite: invite, joinAsPeerId: joinAsPeerId, initialCall: initialCall).startStrict())
})
} else {
let _ = self?.startGroupCall(accountContext: context, peerId: peerId, invite: invite, joinAsPeerId: nil, initialCall: initialCall).start()
guard let self else {
return
}
self.startCallDisposable.set(self.startGroupCall(accountContext: context, peerId: peerId, invite: invite, joinAsPeerId: nil, initialCall: initialCall).startStrict())
}
}
@ -805,6 +811,8 @@ public final class PresentationCallManagerImpl: PresentationCallManager {
let accessEnabledSignal: Signal<Bool, NoError> = Signal { subscriber in
if let isStream = initialCall.isStream, isStream {
subscriber.putNext(true)
subscriber.putCompletion()
return EmptyDisposable
}