From eee2ae66f34b8484b7b351d3ab620962bbe5d7ff Mon Sep 17 00:00:00 2001 From: Danmei Chen Date: Thu, 8 Apr 2021 15:38:08 +0200 Subject: [PATCH] use auto iteration --- Classes/CallManager.swift | 6 +++ Classes/CoreManager.swift | 66 ------------------------------ Classes/LinphoneAppDelegate.m | 2 +- Classes/LinphoneManager.m | 9 ---- Classes/PhoneMainView.m | 2 +- linphone.xcodeproj/project.pbxproj | 4 -- 6 files changed, 8 insertions(+), 81 deletions(-) delete mode 100644 Classes/CoreManager.swift diff --git a/Classes/CallManager.swift b/Classes/CallManager.swift index bc898bb90..e0fc2db3f 100644 --- a/Classes/CallManager.swift +++ b/Classes/CallManager.swift @@ -112,6 +112,12 @@ import AVFoundation return nil } + @objc func stopLinphoneCore() { + if (lc?.callsNb == 0) { + lc?.stopAsync() + } + } + @objc static func callKitEnabled() -> Bool { #if !targetEnvironment(simulator) if ConfigManager.instance().lpConfigBoolForKey(key: "use_callkit", section: "app") { diff --git a/Classes/CoreManager.swift b/Classes/CoreManager.swift deleted file mode 100644 index e8b160e2d..000000000 --- a/Classes/CoreManager.swift +++ /dev/null @@ -1,66 +0,0 @@ -/* -* Copyright (c) 2010-2020 Belledonne Communications SARL. -* -* This file is part of linphone-iphone -* -* This program is free software: you can redistribute it and/or modify -* it under the terms of the GNU General Public License as published by -* the Free Software Foundation, either version 3 of the License, or -* (at your option) any later version. -* -* This program is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU General Public License for more details. -* -* You should have received a copy of the GNU General Public License -* along with this program. If not, see . -*/ - -import Foundation -import linphonesw - -@objc class CoreManager: NSObject { - static var theCoreManager: CoreManager? - var lc: Core? - private var mIterateTimer: Timer? - - @objc static func instance() -> CoreManager { - if (theCoreManager == nil) { - theCoreManager = CoreManager() - } - return theCoreManager! - } - - @objc func setCore(core: OpaquePointer) { - lc = Core.getSwiftObject(cObject: core) - } - - @objc private func iterate() { - lc?.iterate() - } - - @objc func startIterateTimer() { - if (mIterateTimer?.isValid ?? false) { - Log.directLog(BCTBX_LOG_DEBUG, text: "Iterate timer is already started, skipping ...") - return - } - mIterateTimer = Timer.scheduledTimer(timeInterval: 0.02, target: self, selector: #selector(self.iterate), userInfo: nil, repeats: true) - Log.directLog(BCTBX_LOG_DEBUG, text: "start iterate timer") - - } - - @objc func stopIterateTimer() { - if let timer = mIterateTimer { - Log.directLog(BCTBX_LOG_DEBUG, text: "stop iterate timer") - timer.invalidate() - } - } - - @objc func stopLinphoneCore() { - if (lc?.callsNb == 0) { - //stop iterate when core is off - lc?.stopAsync() - } - } -} diff --git a/Classes/LinphoneAppDelegate.m b/Classes/LinphoneAppDelegate.m index 0e7f5ea10..6586c9425 100644 --- a/Classes/LinphoneAppDelegate.m +++ b/Classes/LinphoneAppDelegate.m @@ -74,7 +74,7 @@ // To avoid crash [PhoneMainView.instance changeCurrentView:DialerView.compositeViewDescription]; } - [CoreManager.instance stopLinphoneCore]; + [CallManager.instance stopLinphoneCore]; } } diff --git a/Classes/LinphoneManager.m b/Classes/LinphoneManager.m index b8b68cc44..915a5e9c2 100644 --- a/Classes/LinphoneManager.m +++ b/Classes/LinphoneManager.m @@ -586,10 +586,6 @@ static void linphone_iphone_global_state_changed(LinphoneCore *lc, LinphoneGloba NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithInt:state], @"state", [NSString stringWithUTF8String:message ? message : ""], @"message", nil]; - - if (theLinphoneCore && linphone_core_get_global_state(theLinphoneCore) == LinphoneGlobalOff) { - [CoreManager.instance stopIterateTimer]; - } // dispatch the notification asynchronously dispatch_async(dispatch_get_main_queue(), ^(void) { if (theLinphoneCore && linphone_core_get_global_state(theLinphoneCore) != LinphoneGlobalOff) @@ -1273,7 +1269,6 @@ void popup_link_account_cb(LinphoneAccountCreator *creator, LinphoneAccountCreat - (void)startLinphoneCore { linphone_core_start([LinphoneManager getLc]); - [CoreManager.instance startIterateTimer]; } - (void)createLinphoneCore { @@ -1325,7 +1320,6 @@ void popup_link_account_cb(LinphoneAccountCreator *creator, LinphoneAccountCreat linphone_core_add_callbacks(theLinphoneCore, cbs); [CallManager.instance setCoreWithCore:theLinphoneCore]; - [CoreManager.instance setCoreWithCore:theLinphoneCore]; [ConfigManager.instance setDbWithDb:_configDb]; linphone_core_start(theLinphoneCore); @@ -1368,12 +1362,9 @@ void popup_link_account_cb(LinphoneAccountCreator *creator, LinphoneAccountCreat /*call iterate once immediately in order to initiate background connections with sip server or remote provisioning * grab, if any */ [self iterate]; - // start scheduler - [CoreManager.instance startIterateTimer]; } - (void)destroyLinphoneCore { - [CoreManager.instance stopIterateTimer]; // just in case [self removeCTCallCenterCb]; diff --git a/Classes/PhoneMainView.m b/Classes/PhoneMainView.m index 6e3399734..1948c11b4 100644 --- a/Classes/PhoneMainView.m +++ b/Classes/PhoneMainView.m @@ -426,7 +426,7 @@ static RootViewManager *rootViewManagerInstance = nil; if ([UIApplication sharedApplication].applicationState == UIApplicationStateBackground) { dispatch_async(dispatch_get_main_queue(), ^{ [PhoneMainView.instance popToView:DialerView.compositeViewDescription]; - [CoreManager.instance stopLinphoneCore]; + [CallManager.instance stopLinphoneCore]; }); } break; diff --git a/linphone.xcodeproj/project.pbxproj b/linphone.xcodeproj/project.pbxproj index cc3379af6..8ddaabba3 100644 --- a/linphone.xcodeproj/project.pbxproj +++ b/linphone.xcodeproj/project.pbxproj @@ -764,7 +764,6 @@ EA88F3AB241BD05200E66528 /* UserNotifications.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8C73477B1D9BA3A00022EE8C /* UserNotifications.framework */; }; EA88F3AC241BD05200E66528 /* UserNotificationsUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5E58962520DCE5700030868C /* UserNotificationsUI.framework */; }; EA88F3AF241BD1F700E66528 /* MainInterface.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = EA8CB82D239F96CA00C330CC /* MainInterface.storyboard */; }; - EA88F3B1241BDAA100E66528 /* CoreManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA88F3B0241BDAA100E66528 /* CoreManager.swift */; }; EA8CB82C239F96CA00C330CC /* NotificationViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA8CB82B239F96CA00C330CC /* NotificationViewController.swift */; }; EA8CB833239F96CA00C330CC /* msgNotificationContent.appex in Embed App Extensions */ = {isa = PBXBuildFile; fileRef = EA8CB827239F96CA00C330CC /* msgNotificationContent.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; }; EAE6C88423FABF690076A018 /* Utils.swift in Sources */ = {isa = PBXBuildFile; fileRef = EAE6C88323FABF690076A018 /* Utils.swift */; }; @@ -1846,7 +1845,6 @@ EA5F25D9232BD3E200475F2E /* msgNotificationService.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = msgNotificationService.appex; sourceTree = BUILT_PRODUCTS_DIR; }; EA5F25DB232BD3E200475F2E /* NotificationService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NotificationService.swift; sourceTree = ""; }; EA5F25DD232BD3E200475F2E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - EA88F3B0241BDAA100E66528 /* CoreManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CoreManager.swift; sourceTree = ""; }; EA8CB827239F96CA00C330CC /* msgNotificationContent.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = msgNotificationContent.appex; sourceTree = BUILT_PRODUCTS_DIR; }; EA8CB82B239F96CA00C330CC /* NotificationViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NotificationViewController.swift; sourceTree = ""; }; EA8CB82E239F96CA00C330CC /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/MainInterface.storyboard; sourceTree = ""; }; @@ -2131,7 +2129,6 @@ C6DA657B261C950C0020CB43 /* VFSUtil.swift */, 614C087723D1A35F00217F80 /* ProviderDelegate.swift */, 614C087923D1A37400217F80 /* CallManager.swift */, - EA88F3B0241BDAA100E66528 /* CoreManager.swift */, 6134812C2406CECC00695B41 /* ConfigManager.swift */, 6134812E2407B35200695B41 /* AppManager.swift */, 614C087623D1A35E00217F80 /* linphone-Bridging-Header.h */, @@ -4193,7 +4190,6 @@ 2214EBF312F86360002A5394 /* UIMutedMicroButton.m in Sources */, 8C9C5E111F83BD97006987FA /* UIChatCreateCollectionViewCell.m in Sources */, 22968A5F12F875C600588287 /* UISpeakerButton.m in Sources */, - EA88F3B1241BDAA100E66528 /* CoreManager.swift in Sources */, 63701DDF1BA32039006A9AE3 /* UIConfirmationDialog.m in Sources */, 6134812D2406CECC00695B41 /* ConfigManager.swift in Sources */, 22C755601317E59C007BC101 /* UIBluetoothButton.m in Sources */,