From 1a2e5e5e8a39476f221448389d35ec43644ca081 Mon Sep 17 00:00:00 2001 From: Ronan Abhamon Date: Thu, 15 Jun 2017 11:52:21 +0200 Subject: [PATCH] fix(CoreManager): create main components at core startup --- src/components/core/CoreHandlers.cpp | 21 +++++++++------------ src/components/core/CoreHandlers.hpp | 1 - src/components/core/CoreManager.cpp | 24 ++++++++++++++---------- src/components/core/CoreManager.hpp | 1 + submodules/linphone | 2 +- ui/views/App/Main/MainWindow.qml | 2 +- 6 files changed, 26 insertions(+), 25 deletions(-) diff --git a/src/components/core/CoreHandlers.cpp b/src/components/core/CoreHandlers.cpp index e14111b33..77c510c63 100644 --- a/src/components/core/CoreHandlers.cpp +++ b/src/components/core/CoreHandlers.cpp @@ -72,16 +72,6 @@ void CoreHandlers::handleCoreCreated () { mCoreStartedLock->unlock(); } -void CoreHandlers::handleCoreStarted () { - mCoreStartedLock->lock(); - - Q_ASSERT(mCoreStarted == false); - mCoreStarted = true; - notifyCoreStarted(); - - mCoreStartedLock->unlock(); -} - void CoreHandlers::notifyCoreStarted () { if (mCoreCreated && mCoreStarted) scheduleFunctionInApp( @@ -128,8 +118,15 @@ void CoreHandlers::onGlobalStateChanged ( linphone::GlobalState gstate, const string & ) { - if (gstate == linphone::GlobalStateOn) - handleCoreStarted(); + if (gstate == linphone::GlobalStateOn) { + mCoreStartedLock->lock(); + + Q_ASSERT(mCoreStarted == false); + mCoreStarted = true; + notifyCoreStarted(); + + mCoreStartedLock->unlock(); + } } void CoreHandlers::onCallStatsUpdated ( diff --git a/src/components/core/CoreHandlers.hpp b/src/components/core/CoreHandlers.hpp index 63262e415..8e4d49462 100644 --- a/src/components/core/CoreHandlers.hpp +++ b/src/components/core/CoreHandlers.hpp @@ -52,7 +52,6 @@ signals: private: void handleCoreCreated (); - void handleCoreStarted (); void notifyCoreStarted (); // --------------------------------------------------------------------------- diff --git a/src/components/core/CoreManager.cpp b/src/components/core/CoreManager.cpp index ecb385664..87c299ece 100644 --- a/src/components/core/CoreManager.cpp +++ b/src/components/core/CoreManager.cpp @@ -46,18 +46,22 @@ CoreManager *CoreManager::mInstance = nullptr; CoreManager::CoreManager (QObject *parent, const QString &configPath) : QObject(parent), mHandlers(make_shared(this)) { mPromiseBuild = QtConcurrent::run(this, &CoreManager::createLinphoneCore, configPath); - QObject::connect(&mPromiseWatcher, &QFutureWatcher::finished, this, []() { - mInstance->mCallsListModel = new CallsListModel(mInstance); - mInstance->mContactsListModel = new ContactsListModel(mInstance); - mInstance->mSipAddressesModel = new SipAddressesModel(mInstance); - mInstance->mSettingsModel = new SettingsModel(mInstance); - mInstance->mAccountSettingsModel = new AccountSettingsModel(mInstance); + QObject::connect(&mPromiseWatcher, &QFutureWatcher::finished, this, [] { + qInfo() << QStringLiteral("Core created. Enable iterate."); + mInstance->mCbsTimer->start(); - qInfo() << QStringLiteral("Core created. Enable iterate."); - mInstance->mCbsTimer->start(); + emit mInstance->coreCreated(); + }); - emit mInstance->coreCreated(); - }); + QObject::connect(mHandlers.get(), &CoreHandlers::coreStarted, this, [] { + mInstance->mCallsListModel = new CallsListModel(mInstance); + mInstance->mContactsListModel = new ContactsListModel(mInstance); + mInstance->mSipAddressesModel = new SipAddressesModel(mInstance); + mInstance->mSettingsModel = new SettingsModel(mInstance); + mInstance->mAccountSettingsModel = new AccountSettingsModel(mInstance); + + emit mInstance->coreStarted(); + }); mPromiseWatcher.setFuture(mPromiseBuild); } diff --git a/src/components/core/CoreManager.hpp b/src/components/core/CoreManager.hpp index 38b592a9f..6ccbc3cbd 100644 --- a/src/components/core/CoreManager.hpp +++ b/src/components/core/CoreManager.hpp @@ -121,6 +121,7 @@ public: signals: void coreCreated (); + void coreStarted (); private: CoreManager (QObject *parent, const QString &configPath); diff --git a/submodules/linphone b/submodules/linphone index 4c291e2c5..e3365011d 160000 --- a/submodules/linphone +++ b/submodules/linphone @@ -1 +1 @@ -Subproject commit 4c291e2c5a32711a1176459d74ed405cf225f706 +Subproject commit e3365011df5d5281fed91beb91fa928ac3568f60 diff --git a/ui/views/App/Main/MainWindow.qml b/ui/views/App/Main/MainWindow.qml index fa5527291..efc615782 100644 --- a/ui/views/App/Main/MainWindow.qml +++ b/ui/views/App/Main/MainWindow.qml @@ -51,7 +51,7 @@ ApplicationWindow { Connections { target: CoreManager - onCoreCreated: mainLoader.active = true + onCoreStarted: mainLoader.active = true } Shortcut {