diff --git a/Signal/src/ViewControllers/CallViewController.swift b/Signal/src/ViewControllers/CallViewController.swift index 6a592e362..617d6012e 100644 --- a/Signal/src/ViewControllers/CallViewController.swift +++ b/Signal/src/ViewControllers/CallViewController.swift @@ -72,7 +72,6 @@ class CallViewController: OWSViewController, CallObserver, CallServiceObserver, var remoteVideoView: RemoteVideoView! var localVideoView: RTCCameraPreviewView! var hasShownLocalVideo = false - weak var localVideoTrack: RTCVideoTrack? weak var localCaptureSession: AVCaptureSession? weak var remoteVideoTrack: RTCVideoTrack? @@ -1001,16 +1000,10 @@ class CallViewController: OWSViewController, CallObserver, CallServiceObserver, // MARK: - Video - // MJK TODO remove localVideoTrack? - internal func updateLocalVideoTrack(localVideoTrack: RTCVideoTrack?, - captureSession: AVCaptureSession?) { + internal func updateLocalVideo(captureSession: AVCaptureSession?) { SwiftAssertIsOnMainThread(#function) - guard self.localVideoTrack != localVideoTrack else { - return - } - self.localVideoTrack = localVideoTrack localVideoView.captureSession = captureSession let isHidden = captureSession == nil @@ -1118,14 +1111,12 @@ class CallViewController: OWSViewController, CallObserver, CallServiceObserver, // Do nothing. } - // TODO remove localCaptureSession: internal func didUpdateVideoTracks(call: SignalCall?, - localVideoTrack: RTCVideoTrack?, localCaptureSession: AVCaptureSession?, remoteVideoTrack: RTCVideoTrack?) { SwiftAssertIsOnMainThread(#function) - updateLocalVideoTrack(localVideoTrack: localVideoTrack, captureSession: localCaptureSession) + updateLocalVideo(captureSession: localCaptureSession) updateRemoteVideoTrack(remoteVideoTrack: remoteVideoTrack) } } diff --git a/Signal/src/call/CallService.swift b/Signal/src/call/CallService.swift index 83d6d92e9..f4bff4cc3 100644 --- a/Signal/src/call/CallService.swift +++ b/Signal/src/call/CallService.swift @@ -93,9 +93,7 @@ protocol CallServiceObserver: class { /** * Fired whenever the local or remote video track become active or inactive. */ - // TODO remove localCaptureSession: func didUpdateVideoTracks(call: SignalCall?, - localVideoTrack: RTCVideoTrack?, localCaptureSession: AVCaptureSession?, remoteVideoTrack: RTCVideoTrack?) } @@ -119,14 +117,6 @@ private class SignalCallData: NSObject { let rejectReadyToSendIceUpdatesPromise: ((Error) -> Void) let readyToSendIceUpdatesPromise: Promise - weak var localVideoTrack: RTCVideoTrack? { - didSet { - SwiftAssertIsOnMainThread(#function) - - Logger.info("\(self.logTag) \(#function)") - } - } - weak var localCaptureSession: AVCaptureSession? { didSet { SwiftAssertIsOnMainThread(#function) @@ -285,13 +275,6 @@ private class SignalCallData: NSObject { return callData?.peerConnectionClient } } - var localVideoTrack: RTCVideoTrack? { - get { - SwiftAssertIsOnMainThread(#function) - - return callData?.localVideoTrack - } - } weak var localCaptureSession: AVCaptureSession? { get { @@ -1422,7 +1405,7 @@ private class SignalCallData: NSObject { self.handleDataChannelMessage(dataChannelMessage) } - internal func peerConnectionClient(_ peerConnectionClient: PeerConnectionClient, didUpdateLocalVideoTrack videoTrack: RTCVideoTrack?, captureSession: AVCaptureSession?) { + internal func peerConnectionClient(_ peerConnectionClient: PeerConnectionClient, didUpdateLocalVideoCaptureSession captureSession: AVCaptureSession?) { SwiftAssertIsOnMainThread(#function) guard peerConnectionClient == self.peerConnectionClient else { @@ -1434,8 +1417,6 @@ private class SignalCallData: NSObject { return } - // MJK TODO remove localVideo Track? - callData.localVideoTrack = videoTrack callData.localCaptureSession = captureSession fireDidUpdateVideoTracks() } @@ -1639,7 +1620,6 @@ private class SignalCallData: NSObject { // Synchronize observer with current call state let remoteVideoTrack = self.isRemoteVideoEnabled ? self.remoteVideoTrack : nil observer.didUpdateVideoTracks(call: self.call, - localVideoTrack: self.localVideoTrack, localCaptureSession: self.localCaptureSession, remoteVideoTrack: remoteVideoTrack) } @@ -1666,7 +1646,6 @@ private class SignalCallData: NSObject { let remoteVideoTrack = self.isRemoteVideoEnabled ? self.remoteVideoTrack : nil for observer in observers { observer.value?.didUpdateVideoTracks(call: self.call, - localVideoTrack: self.localVideoTrack, localCaptureSession: self.localCaptureSession, remoteVideoTrack: remoteVideoTrack) } diff --git a/Signal/src/call/PeerConnectionClient.swift b/Signal/src/call/PeerConnectionClient.swift index c74e5369d..9a7f062b6 100644 --- a/Signal/src/call/PeerConnectionClient.swift +++ b/Signal/src/call/PeerConnectionClient.swift @@ -58,7 +58,7 @@ protocol PeerConnectionClientDelegate: class { /** * Fired whenever the local video track become active or inactive. */ - func peerConnectionClient(_ peerconnectionClient: PeerConnectionClient, didUpdateLocalVideoTrack videoTrack: RTCVideoTrack?, captureSession: AVCaptureSession?) + func peerConnectionClient(_ peerconnectionClient: PeerConnectionClient, didUpdateLocalVideoCaptureSession captureSession: AVCaptureSession?) /** * Fired whenever the remote video track become active or inactive. @@ -235,12 +235,12 @@ class PeerConnectionClient: NSObject, RTCPeerConnectionDelegate, RTCDataChannelD private var videoCaptureController: VideoCaptureController? private var videoCaptureSession: AVCaptureSession? private var videoSender: RTCRtpSender? - private var localVideoTrack: RTCVideoTrack? private var localVideoSource: RTCVideoSource? // RTCVideoTrack is fragile and prone to throwing exceptions and/or // causing deadlock in its destructor. Therefore we take great care // with this property. + private var localVideoTrack: RTCVideoTrack? private var remoteVideoTrack: RTCVideoTrack? private var cameraConstraints: RTCMediaConstraints @@ -347,7 +347,6 @@ class PeerConnectionClient: NSObject, RTCPeerConnectionDelegate, RTCDataChannelD let localVideoTrack = factory.videoTrack(with: videoSource, trackId: Identifiers.videoTrack.rawValue) self.localVideoTrack = localVideoTrack - self.videoCaptureController = VideoCaptureController(capturer: capturer, settingsDelegate: self) // Disable by default until call is connected. @@ -385,14 +384,12 @@ class PeerConnectionClient: NSObject, RTCPeerConnectionDelegate, RTCDataChannelD guard let strongSelf = proxyCopy.get() else { return } // Should these really be guards? Don't we want to pass nil when it's been disabled? - guard let localVideoTrack = strongSelf.localVideoTrack else { return } guard let videoCaptureSession = strongSelf.videoCaptureSession else { return } guard let strongDelegate = strongSelf.delegate else { return } - let videoTrack = enabled ? localVideoTrack : nil let captureSession = enabled ? videoCaptureSession : nil - strongDelegate.peerConnectionClient(strongSelf, didUpdateLocalVideoTrack: videoTrack, captureSession: captureSession) + strongDelegate.peerConnectionClient(strongSelf, didUpdateLocalVideoCaptureSession: captureSession) } PeerConnectionClient.signalingQueue.async { @@ -401,29 +398,24 @@ class PeerConnectionClient: NSObject, RTCPeerConnectionDelegate, RTCDataChannelD Logger.debug("\(strongSelf.logTag) \(#function) Ignoring obsolete event in terminated client") return } - guard let localVideoTrack = strongSelf.localVideoTrack else { + + guard let videoCaptureController = strongSelf.videoCaptureController else { Logger.debug("\(strongSelf.logTag) \(#function) Ignoring obsolete event in terminated client") return } -// guard let videoCaptureSession = strongSelf.videoCaptureSession else { -// Logger.debug("\(strongSelf.logTag) \(#function) Ignoring obsolete event in terminated client") -// return -// } - guard let videoCaptureController = strongSelf.videoCaptureController else { + guard let localVideoTrack = strongSelf.localVideoTrack else { Logger.debug("\(strongSelf.logTag) \(#function) Ignoring obsolete event in terminated client") return } localVideoTrack.isEnabled = enabled if enabled { - Logger.debug("\(strongSelf.logTag) in \(#function) starting videoCaptureSession") + Logger.debug("\(strongSelf.logTag) in \(#function) starting video capture") videoCaptureController.startCapture() -// videoCaptureSession.startRunning() } else { - Logger.debug("\(strongSelf.logTag) in \(#function) stopping videoCaptureSession") + Logger.debug("\(strongSelf.logTag) in \(#function) stopping video capture") videoCaptureController.stopCapture() -// videoCaptureSession.stopRunning() } DispatchQueue.main.async(execute: completion) diff --git a/Signal/src/call/UserInterface/CallUIAdapter.swift b/Signal/src/call/UserInterface/CallUIAdapter.swift index f521b8638..0031fd223 100644 --- a/Signal/src/call/UserInterface/CallUIAdapter.swift +++ b/Signal/src/call/UserInterface/CallUIAdapter.swift @@ -272,7 +272,6 @@ extension CallUIAdaptee { } internal func didUpdateVideoTracks(call: SignalCall?, - localVideoTrack: RTCVideoTrack?, localCaptureSession: AVCaptureSession?, remoteVideoTrack: RTCVideoTrack?) { SwiftAssertIsOnMainThread(#function)