diff --git a/linphone-app/src/app/main.cpp b/linphone-app/src/app/main.cpp index 8813e1ca2..4cabd7c3d 100644 --- a/linphone-app/src/app/main.cpp +++ b/linphone-app/src/app/main.cpp @@ -23,6 +23,8 @@ #ifdef QT_QML_DEBUG #include #endif + +#include "components/core/CoreManager.hpp" // ============================================================================= int main (int argc, char *argv[]) { @@ -45,5 +47,9 @@ int main (int argc, char *argv[]) { app->initContentApp(); ret = app->exec(); } while (ret == App::RestartCode); + auto core = CoreManager::getInstance()->getCore(); + if(core && core->getGlobalState() == linphone::GlobalState::On) + core->stop(); + return ret; } diff --git a/linphone-app/src/components/camera/CameraPreview.cpp b/linphone-app/src/components/camera/CameraPreview.cpp index 47c8a41e3..0d0dd98f9 100644 --- a/linphone-app/src/components/camera/CameraPreview.cpp +++ b/linphone-app/src/components/camera/CameraPreview.cpp @@ -64,11 +64,14 @@ CameraPreview::CameraPreview (QQuickItem *parent) : QQuickFramebufferObject(pare } CameraPreview::~CameraPreview () { - mCounterMutex.lock(); - if (--mCounter == 0) - CoreManager::getInstance()->getCore()->enableVideoPreview(false); - mCounterMutex.unlock(); - CoreManager::getInstance()->getCore()->setNativePreviewWindowId(NULL); + auto core = CoreManager::getInstance()->getCore(); + if(core){ + mCounterMutex.lock(); + if (--mCounter == 0) + core->enableVideoPreview(false); + mCounterMutex.unlock(); + core->setNativePreviewWindowId(NULL); + } } class SafeFramebuffer : public QQuickFramebufferObject::Renderer{ diff --git a/linphone-app/src/components/chat-room/ChatRoomModel.cpp b/linphone-app/src/components/chat-room/ChatRoomModel.cpp index ab10e8541..ccf05c145 100644 --- a/linphone-app/src/components/chat-room/ChatRoomModel.cpp +++ b/linphone-app/src/components/chat-room/ChatRoomModel.cpp @@ -248,17 +248,19 @@ ChatRoomModel::ChatRoomModel (std::shared_ptr chatRoom, QObj ChatRoomModel::~ChatRoomModel () { mParticipantListModel = nullptr; - if(mChatRoom){ + if(mChatRoom ){ mChatRoom->removeListener(mChatRoomModelListener); if(mDeleteChatRoom){ mDeleteChatRoom = false; - auto participants = mChatRoom->getParticipants(); - std::list> participantsAddress; - for(auto p : participants) - participantsAddress.push_back(p->getAddress()->clone()); - auto internalChatRoom = CoreManager::getInstance()->getCore()->searchChatRoom(mChatRoom->getCurrentParams(), mChatRoom->getLocalAddress(), mChatRoom->getPeerAddress(), participantsAddress); - if( internalChatRoom) - CoreManager::getInstance()->getCore()->deleteChatRoom(internalChatRoom); + if(CoreManager::getInstance()->getCore() ){ + auto participants = mChatRoom->getParticipants(); + std::list> participantsAddress; + for(auto p : participants) + participantsAddress.push_back(p->getAddress()->clone()); + auto internalChatRoom = CoreManager::getInstance()->getCore()->searchChatRoom(mChatRoom->getCurrentParams(), mChatRoom->getLocalAddress(), mChatRoom->getPeerAddress(), participantsAddress); + if( internalChatRoom) + CoreManager::getInstance()->getCore()->deleteChatRoom(internalChatRoom); + } } } mChatRoom = nullptr;