mirror of
https://gitlab.linphone.org/BC/public/linphone-iphone.git
synced 2026-01-17 02:58:07 +00:00
Fix call video display (nativePreviewWindow and nativeVideoWindow)
This commit is contained in:
parent
91c6f7a311
commit
d3984b4b1a
2 changed files with 38 additions and 3 deletions
|
|
@ -558,6 +558,10 @@ struct CallView: View {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.onDisappear {
|
.onDisappear {
|
||||||
|
coreContext.doOnCoreQueue { core in
|
||||||
|
core.nativeVideoWindow = nil
|
||||||
|
}
|
||||||
|
|
||||||
if callViewModel.videoDisplayed {
|
if callViewModel.videoDisplayed {
|
||||||
if !callViewModel.isPaused && TelecomManager.shared.callInProgress
|
if !callViewModel.isPaused && TelecomManager.shared.callInProgress
|
||||||
&& !(coreContext.pipViewModel.pipController?.isPictureInPictureActive ?? false) {
|
&& !(coreContext.pipViewModel.pipController?.isPictureInPictureActive ?? false) {
|
||||||
|
|
@ -585,6 +589,11 @@ struct CallView: View {
|
||||||
core.nativePreviewWindow = view
|
core.nativePreviewWindow = view
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
.onDisappear {
|
||||||
|
coreContext.doOnCoreQueue { core in
|
||||||
|
core.nativePreviewWindow = nil
|
||||||
|
}
|
||||||
|
}
|
||||||
.aspectRatio(callViewModel.callStatsModel.sentVideoWindow.widthFactor/callViewModel.callStatsModel.sentVideoWindow.heightFactor, contentMode: .fill)
|
.aspectRatio(callViewModel.callStatsModel.sentVideoWindow.widthFactor/callViewModel.callStatsModel.sentVideoWindow.heightFactor, contentMode: .fill)
|
||||||
.frame(maxWidth: callViewModel.callStatsModel.sentVideoWindow.widthFactor * 256,
|
.frame(maxWidth: callViewModel.callStatsModel.sentVideoWindow.widthFactor * 256,
|
||||||
maxHeight: callViewModel.callStatsModel.sentVideoWindow.heightFactor * 256)
|
maxHeight: callViewModel.callStatsModel.sentVideoWindow.heightFactor * 256)
|
||||||
|
|
@ -703,6 +712,11 @@ struct CallView: View {
|
||||||
core.nativePreviewWindow = view
|
core.nativePreviewWindow = view
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
.onDisappear {
|
||||||
|
coreContext.doOnCoreQueue { core in
|
||||||
|
core.nativePreviewWindow = nil
|
||||||
|
}
|
||||||
|
}
|
||||||
.aspectRatio(callViewModel.callStatsModel.sentVideoWindow.widthFactor/callViewModel.callStatsModel.sentVideoWindow.heightFactor, contentMode: .fill)
|
.aspectRatio(callViewModel.callStatsModel.sentVideoWindow.widthFactor/callViewModel.callStatsModel.sentVideoWindow.heightFactor, contentMode: .fill)
|
||||||
.frame(maxWidth: callViewModel.callStatsModel.sentVideoWindow.widthFactor * 256,
|
.frame(maxWidth: callViewModel.callStatsModel.sentVideoWindow.widthFactor * 256,
|
||||||
maxHeight: callViewModel.callStatsModel.sentVideoWindow.heightFactor * 256)
|
maxHeight: callViewModel.callStatsModel.sentVideoWindow.heightFactor * 256)
|
||||||
|
|
@ -897,6 +911,9 @@ struct CallView: View {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.onDisappear {
|
.onDisappear {
|
||||||
|
coreContext.doOnCoreQueue { core in
|
||||||
|
core.nativeVideoWindow = nil
|
||||||
|
}
|
||||||
if !callViewModel.isPaused && TelecomManager.shared.callInProgress
|
if !callViewModel.isPaused && TelecomManager.shared.callInProgress
|
||||||
&& !(coreContext.pipViewModel.pipController?.isPictureInPictureActive ?? false) {
|
&& !(coreContext.pipViewModel.pipController?.isPictureInPictureActive ?? false) {
|
||||||
// TODO: Enable PIP in 6.1
|
// TODO: Enable PIP in 6.1
|
||||||
|
|
@ -978,6 +995,11 @@ struct CallView: View {
|
||||||
core.nativePreviewWindow = view
|
core.nativePreviewWindow = view
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
.onDisappear {
|
||||||
|
coreContext.doOnCoreQueue { core in
|
||||||
|
core.nativePreviewWindow = nil
|
||||||
|
}
|
||||||
|
}
|
||||||
.frame(width: angleDegree == 0 ? 120*1.2 : 160*1.2, height: angleDegree == 0 ? 160*1.2 : 120*1.2)
|
.frame(width: angleDegree == 0 ? 120*1.2 : 160*1.2, height: angleDegree == 0 ? 160*1.2 : 120*1.2)
|
||||||
.scaledToFill()
|
.scaledToFill()
|
||||||
.clipped()
|
.clipped()
|
||||||
|
|
@ -1143,6 +1165,11 @@ struct CallView: View {
|
||||||
core.nativePreviewWindow = view
|
core.nativePreviewWindow = view
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
.onDisappear {
|
||||||
|
coreContext.doOnCoreQueue { core in
|
||||||
|
core.nativePreviewWindow = nil
|
||||||
|
}
|
||||||
|
}
|
||||||
.frame(width: angleDegree == 0 ? 120*1.2 : 160*1.2, height: angleDegree == 0 ? 160*1.2 : 120*1.2)
|
.frame(width: angleDegree == 0 ? 120*1.2 : 160*1.2, height: angleDegree == 0 ? 160*1.2 : 120*1.2)
|
||||||
.scaledToFill()
|
.scaledToFill()
|
||||||
.clipped()
|
.clipped()
|
||||||
|
|
@ -1362,6 +1389,11 @@ struct CallView: View {
|
||||||
core.nativePreviewWindow = view
|
core.nativePreviewWindow = view
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
.onDisappear {
|
||||||
|
coreContext.doOnCoreQueue { core in
|
||||||
|
core.nativePreviewWindow = nil
|
||||||
|
}
|
||||||
|
}
|
||||||
.frame(
|
.frame(
|
||||||
width: 120 * ceil(maxValue / 120),
|
width: 120 * ceil(maxValue / 120),
|
||||||
height: 160 * ceil(maxValue / 120)
|
height: 160 * ceil(maxValue / 120)
|
||||||
|
|
@ -1598,6 +1630,11 @@ struct CallView: View {
|
||||||
core.nativePreviewWindow = view
|
core.nativePreviewWindow = view
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
.onDisappear {
|
||||||
|
coreContext.doOnCoreQueue { core in
|
||||||
|
core.nativePreviewWindow = nil
|
||||||
|
}
|
||||||
|
}
|
||||||
.frame(
|
.frame(
|
||||||
width: 160 * ceil(maxValue / 120),
|
width: 160 * ceil(maxValue / 120),
|
||||||
height: 120 * ceil(maxValue / 120)
|
height: 120 * ceil(maxValue / 120)
|
||||||
|
|
|
||||||
|
|
@ -714,10 +714,8 @@ class CallViewModel: ObservableObject {
|
||||||
func displayMyVideo() {
|
func displayMyVideo() {
|
||||||
coreContext.doOnCoreQueue { core in
|
coreContext.doOnCoreQueue { core in
|
||||||
guard let call = self.currentCall else { return }
|
guard let call = self.currentCall else { return }
|
||||||
|
|
||||||
let invalidStates: [Call.State] = [.Released, .End, .Error, .Idle]
|
|
||||||
|
|
||||||
guard !invalidStates.contains(call.state) else {
|
guard call.state == .StreamsRunning else {
|
||||||
Log.warn("\(CallViewModel.TAG) displayMyVideo called in invalid state: \(call.state), skipping update")
|
Log.warn("\(CallViewModel.TAG) displayMyVideo called in invalid state: \(call.state), skipping update")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue