Git commit dab9b6644f38219f3b9972b797e907d1dea5eb03 by Emmanuel Lepage Vall= ee. Committed on 30/04/2015 at 23:37. Pushed by lepagevalleeemmanuel into branch 'master'. video: Add videoStopped call signal Refs #71995 M +9 -0 src/call.cpp M +2 -0 src/call.h M +4 -0 src/callmodel.cpp M +2 -0 src/callmodel.h M +1 -0 src/private/call_p.h M +6 -0 src/private/videorenderermanager.cpp http://commits.kde.org/libringclient/dab9b6644f38219f3b9972b797e907d1dea5eb= 03 diff --git a/src/call.cpp b/src/call.cpp index dbf91bf..633bb8c 100644 --- a/src/call.cpp +++ b/src/call.cpp @@ -872,6 +872,15 @@ void CallPrivate::registerRenderer(Video::Renderer* re= nderer) #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 7531182..0e2697a 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 5bad310..a1be729 100644 --- a/src/callmodel.cpp +++ b/src/callmodel.cpp @@ -413,6 +413,9 @@ Call* CallModelPrivate::addCall2(Call* call, Call* pare= ntCall) 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, A= ccount* 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 =3D addCall2(CallPrivate::buildIncomingCall(callId)); = //The call can already have been invalidated by the daemon, then do not= hing diff --git a/src/callmodel.h b/src/callmodel.h index 1b83b9b..b145d4c 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 8d8583e..382103e 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/videorender= ermanager.cpp index f054cb2..e65c8a8 100644 --- a/src/private/videorenderermanager.cpp +++ b/src/private/videorenderermanager.cpp @@ -284,6 +284,12 @@ void VideoRendererManagerPrivate::stoppedDecoding(cons= t QString& id, const QStri return; } = + Call* c =3D 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()] !=3D nullptr);