From f8dda2f1a71ce7ede1ed8b3d85962987995caea4 Mon Sep 17 00:00:00 2001 From: Danmei Chen Date: Tue, 5 Jan 2021 12:18:17 +0100 Subject: [PATCH] fix switch video --- Classes/CallManager.swift | 7 +++++++ Classes/CallView.m | 9 ++------- Classes/LinphoneAppDelegate.m | 23 +++++------------------ 3 files changed, 14 insertions(+), 25 deletions(-) diff --git a/Classes/CallManager.swift b/Classes/CallManager.swift index 8e0967155..dae7018aa 100644 --- a/Classes/CallManager.swift +++ b/Classes/CallManager.swift @@ -417,6 +417,13 @@ import AVFoundation } } + @objc func acceptVideo(call: OpaquePointer, confirm: Bool) { + let sCall = Call.getSwiftObject(cObject: call) + let params = try? lc?.createCallParams(call: sCall) + params?.videoEnabled = confirm + try? sCall.acceptUpdate(params: params) + } + func onGlobalStateChanged(core: Core, state: GlobalState, message: String) { if (state == .On) { actionsToPerformOnceWhenCoreIsOn.forEach { diff --git a/Classes/CallView.m b/Classes/CallView.m index e00759d9f..705f4ef47 100644 --- a/Classes/CallView.m +++ b/Classes/CallView.m @@ -685,9 +685,7 @@ static void hideSpinner(LinphoneCall *call, void *user_data) { onCancelClick:^() { LOGI(@"User declined video proposal"); if (call == linphone_core_get_current_call(LC)) { - LinphoneCallParams *params = linphone_core_create_call_params(LC, call); - linphone_call_accept_update(call, params); - linphone_call_params_unref(params); + [CallManager.instance acceptVideoWithCall:call confirm:FALSE]; [videoDismissTimer invalidate]; videoDismissTimer = nil; } @@ -695,10 +693,7 @@ static void hideSpinner(LinphoneCall *call, void *user_data) { onConfirmationClick:^() { LOGI(@"User accept video proposal"); if (call == linphone_core_get_current_call(LC)) { - LinphoneCallParams *params = linphone_core_create_call_params(LC, call); - linphone_call_params_enable_video(params, TRUE); - linphone_call_accept_update(call, params); - linphone_call_params_unref(params); + [CallManager.instance acceptVideoWithCall:call confirm:TRUE]; [videoDismissTimer invalidate]; videoDismissTimer = nil; } diff --git a/Classes/LinphoneAppDelegate.m b/Classes/LinphoneAppDelegate.m index 3fa616136..f4dc0991a 100644 --- a/Classes/LinphoneAppDelegate.m +++ b/Classes/LinphoneAppDelegate.m @@ -649,21 +649,15 @@ LOGI(@"User declined video proposal"); if (call != linphone_core_get_current_call(LC)) return; - - LinphoneCallParams *params = linphone_core_create_call_params(LC, call); - linphone_call_accept_update(call, params); - linphone_call_params_unref(params); + [CallManager.instance acceptVideoWithCall:call confirm:FALSE]; } else if ([response.actionIdentifier isEqual:@"Accept"]) { LOGI(@"User accept video proposal"); if (call != linphone_core_get_current_call(LC)) return; [[UNUserNotificationCenter currentNotificationCenter] removeAllDeliveredNotifications]; - [PhoneMainView.instance changeCurrentView:CallView.compositeViewDescription]; - LinphoneCallParams *params = linphone_core_create_call_params(LC, call); - linphone_call_params_enable_video(params, TRUE); - linphone_call_accept_update(call, params); - linphone_call_params_unref(params); + [PhoneMainView.instance changeCurrentView:CallView.compositeViewDescription]; + [CallManager.instance acceptVideoWithCall:call confirm:TRUE]; } else if ([response.actionIdentifier isEqual:@"Confirm"]) { if (linphone_core_get_current_call(LC) == call) linphone_call_set_authentication_token_verified(call, YES); @@ -703,21 +697,14 @@ LOGI(@"User declined video proposal"); if (call != linphone_core_get_current_call(LC)) return; - - LinphoneCallParams *params = linphone_core_create_call_params(LC, call); - linphone_call_accept_update(call, params); - linphone_call_params_unref(params); + [CallManager.instance acceptVideoWithCall:call confirm:FALSE]; [videoDismissTimer invalidate]; } onConfirmationClick:^() { LOGI(@"User accept video proposal"); if (call != linphone_core_get_current_call(LC)) return; - - LinphoneCallParams *params = linphone_core_create_call_params(LC, call); - linphone_call_params_enable_video(params, TRUE); - linphone_call_accept_update(call, params); - linphone_call_params_unref(params); + [CallManager.instance acceptVideoWithCall:call confirm:TRUE]; [videoDismissTimer invalidate]; } inController:PhoneMainView.instance];