From dab9b6644f38219f3b9972b797e907d1dea5eb03 Mon Sep 17 00:00:00 2001 From: Emmanuel Lepage Vallee <emmanuel.lepage@savoirfairelinux.com> Date: Thu, 30 Apr 2015 19:37:59 -0400 Subject: [PATCH] video: Add videoStopped call signal Refs #71995 --- src/call.cpp | 9 +++++++++ src/call.h | 2 ++ src/callmodel.cpp | 4 ++++ src/callmodel.h | 2 ++ src/private/call_p.h | 1 + src/private/videorenderermanager.cpp | 6 ++++++ 6 files changed, 24 insertions(+) diff --git a/src/call.cpp b/src/call.cpp index dbf91bf6..633bb8ce 100644 --- a/src/call.cpp +++ b/src/call.cpp @@ -872,6 +872,15 @@ void CallPrivate::registerRenderer(Video::Renderer* renderer) #endif } +void CallPrivate::removeRenderer(Video::Renderer* renderer) +{ + #ifdef ENABLE_VIDEO + emit q_ptr->videoStopped(renderer); + #else + return; + #endif +} + /***************************************************************************** * * diff --git a/src/call.h b/src/call.h index 75311826..0e2697ac 100644 --- a/src/call.h +++ b/src/call.h @@ -342,6 +342,8 @@ Q_SIGNALS: void dialNumberChanged(const QString& number); ///Announce a new video renderer void videoStarted(Video::Renderer* renderer); + ///Remove a new video renderer + void videoStopped(Video::Renderer* renderer); }; Q_DECLARE_METATYPE(Call*) diff --git a/src/callmodel.cpp b/src/callmodel.cpp index 5bad310f..a1be7295 100644 --- a/src/callmodel.cpp +++ b/src/callmodel.cpp @@ -413,6 +413,9 @@ Call* CallModelPrivate::addCall2(Call* call, Call* parentCall) connect(call,&Call::videoStarted,[this,call](Video::Renderer* r){ emit q_ptr->rendererAdded(call, r); }); + connect(call,&Call::videoStopped,[this,call](Video::Renderer* r){ + emit q_ptr->rendererRemoved(call, r); + }); emit q_ptr->layoutChanged(); } return call; @@ -434,6 +437,7 @@ Call* CallModel::dialingCall(const QString& peerName, Account* account) ///Create a new incoming call when the daemon is being called Call* CallModelPrivate::addIncomingCall(const QString& callId) { + qDebug() << "New incoming call:" << callId; Call* call = addCall2(CallPrivate::buildIncomingCall(callId)); //The call can already have been invalidated by the daemon, then do nothing diff --git a/src/callmodel.h b/src/callmodel.h index 1b83b9b8..b145d4cb 100644 --- a/src/callmodel.h +++ b/src/callmodel.h @@ -154,6 +154,8 @@ Q_SIGNALS: void callAdded ( Call* call , Call* parent ); ///Emitted when a new Video::Renderer is available void rendererAdded ( Call* call, Video::Renderer* renderer ); + ///Emitted when a new Video::Renderer is available + void rendererRemoved ( Call* call, Video::Renderer* renderer ); }; Q_DECLARE_METATYPE(CallModel*) diff --git a/src/private/call_p.h b/src/private/call_p.h index 8d8583e2..382103e7 100644 --- a/src/private/call_p.h +++ b/src/private/call_p.h @@ -225,6 +225,7 @@ public: void setStartTimeStamp(time_t stamp); void initTimer(); void registerRenderer(Video::Renderer* renderer); + void removeRenderer(Video::Renderer* renderer); //Static getters static Call::State startStateFromDaemonCallState ( const QString& daemonCallState, const QString& daemonCallType ); diff --git a/src/private/videorenderermanager.cpp b/src/private/videorenderermanager.cpp index f054cb21..e65c8a80 100644 --- a/src/private/videorenderermanager.cpp +++ b/src/private/videorenderermanager.cpp @@ -284,6 +284,12 @@ void VideoRendererManagerPrivate::stoppedDecoding(const QString& id, const QStri return; } + Call* c = CallModel::instance()->getCall(id); + + if (c) { + c->d_ptr->removeRenderer(r); + } + r->stopRendering(); qDebug() << "Video stopped for call" << id << "Renderer found:" << (m_hRenderers[id.toLatin1()] != nullptr); -- GitLab