From c8458433e98cfea801575f50440c40a3c263f748 Mon Sep 17 00:00:00 2001 From: Julien Wadel Date: Thu, 30 Jun 2022 10:24:29 +0200 Subject: [PATCH] Protect setting window ID in camera when core or call are not usable. --- linphone-app/src/components/camera/Camera.cpp | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/linphone-app/src/components/camera/Camera.cpp b/linphone-app/src/components/camera/Camera.cpp index 62237398b..e8b580e0b 100644 --- a/linphone-app/src/components/camera/Camera.cpp +++ b/linphone-app/src/components/camera/Camera.cpp @@ -68,16 +68,17 @@ Camera::~Camera(){ } void Camera::resetWindowId() const{ - if(mIsWindowIdSet){ + auto core = CoreManager::getInstance()->getCore(); + if(core && mIsWindowIdSet){ QQuickFramebufferObject::Renderer * oldRenderer = NULL; if(mWindowIdLocation == CorePreview){ - oldRenderer = (QQuickFramebufferObject::Renderer *)CoreManager::getInstance()->getCore()->getNativePreviewWindowId(); + oldRenderer = (QQuickFramebufferObject::Renderer *)core->getNativePreviewWindowId(); if(oldRenderer) - CoreManager::getInstance()->getCore()->setNativePreviewWindowId(NULL); + core->setNativePreviewWindowId(NULL); }else if( mWindowIdLocation == Call){ if(mCallModel){ auto call = mCallModel->getCall(); - if( call ){ + if( call && call->getState() != linphone::Call::State::End && call->getState() != linphone::Call::State::Released){ oldRenderer = (QQuickFramebufferObject::Renderer *) call->getNativeVideoWindowId(); if(oldRenderer) call->setNativeVideoWindowId(NULL); @@ -93,9 +94,9 @@ void Camera::resetWindowId() const{ } } }else if( mWindowIdLocation == Core){ - oldRenderer = (QQuickFramebufferObject::Renderer *)CoreManager::getInstance()->getCore()->getNativeVideoWindowId(); + oldRenderer = (QQuickFramebufferObject::Renderer *)core->getNativeVideoWindowId(); if(oldRenderer) - CoreManager::getInstance()->getCore()->setNativeVideoWindowId(NULL); + core->setNativeVideoWindowId(NULL); } qDebug() << "[Camera] Removed " << oldRenderer << " at " << mWindowIdLocation << " for " << this; mIsWindowIdSet = false;