From 9a71d37b3ac25fe784867366bb88a873ff9a8153 Mon Sep 17 00:00:00 2001
From: Emmanuel Lepage Vallee <emmanuel.lepage@savoirfairelinux.com>
Date: Mon, 23 Mar 2015 18:24:14 -0400
Subject: [PATCH] video: Handle invalid SHM

Also use the Qt5 signals and slots syntax for critical signals

Refs #69096
---
 src/accountmodel.cpp                   | 6 +++---
 src/private/accountmodel_p.h           | 2 +-
 src/private/shmrenderer.cpp            | 7 ++++++-
 src/private/videorenderermanager.cpp   | 4 ++--
 xml/callmanager-introspec.xml          | 7 +++++++
 xml/configurationmanager-introspec.xml | 2 +-
 6 files changed, 20 insertions(+), 8 deletions(-)

diff --git a/src/accountmodel.cpp b/src/accountmodel.cpp
index 3711fd66..8aedef08 100644
--- a/src/accountmodel.cpp
+++ b/src/accountmodel.cpp
@@ -64,8 +64,8 @@ void AccountModelPrivate::init()
    CallManagerInterface& callManager = DBus::CallManager::instance();
    ConfigurationManagerInterface& configurationManager = DBus::ConfigurationManager::instance();
 
-   connect(&configurationManager, SIGNAL(registrationStateChanged(QString,QString, unsigned, QString)),this ,
-      SLOT(slotAccountChanged(QString,QString, unsigned, QString)));
+   connect(&configurationManager, &ConfigurationManagerInterface::registrationStateChanged,this ,
+      &AccountModelPrivate::slotDaemonAccountChanged);
    connect(&configurationManager, SIGNAL(accountsChanged())                               ,q_ptr,
       SLOT(updateAccounts())                  );
    connect(&callManager         , SIGNAL(voiceMailNotify(QString,int))                    ,this ,
@@ -208,7 +208,7 @@ Account::RegistrationState AccountModelPrivate::fromDaemonName(const QString& st
 }
 
 ///Account status changed
-void AccountModelPrivate::slotAccountChanged(const QString& account, const QString& registration_state, unsigned code, const QString& status)
+void AccountModelPrivate::slotDaemonAccountChanged(const QString& account, const QString& registration_state, unsigned code, const QString& status)
 {
    Account* a = q_ptr->getById(account.toLatin1());
 
diff --git a/src/private/accountmodel_p.h b/src/private/accountmodel_p.h
index a9cf5fe5..ff5ed1a3 100644
--- a/src/private/accountmodel_p.h
+++ b/src/private/accountmodel_p.h
@@ -57,7 +57,7 @@ public:
    static  QHash<QByteArray,AccountPlaceHolder*> m_hsPlaceHolder;
 
 public Q_SLOTS:
-   void slotAccountChanged(const QString& account, const QString&  registration_state, unsigned code, const QString& status);
+   void slotDaemonAccountChanged(const QString& account, const QString&  registration_state, unsigned code, const QString& status);
    void slotAccountChanged(Account* a);
    void slotVoiceMailNotify( const QString& accountID , int count );
    void slotAccountPresenceEnabledChanged(bool state);
diff --git a/src/private/shmrenderer.cpp b/src/private/shmrenderer.cpp
index d35243f7..13e7d63a 100644
--- a/src/private/shmrenderer.cpp
+++ b/src/private/shmrenderer.cpp
@@ -313,7 +313,12 @@ void Video::ShmRendererPrivate::timedEvents()
 void Video::ShmRenderer::startRendering()
 {
    QMutexLocker locker {mutex()};
-   startShm();
+
+   if (!startShm()) {
+      qDebug() << "Cannot start rendering on " << d_ptr->m_ShmPath;
+      return;
+   }
+
    if (!d_ptr->m_pTimer) {
       d_ptr->m_pTimer = new QTimer(nullptr);
 
diff --git a/src/private/videorenderermanager.cpp b/src/private/videorenderermanager.cpp
index 99c669fd..75621976 100644
--- a/src/private/videorenderermanager.cpp
+++ b/src/private/videorenderermanager.cpp
@@ -80,8 +80,8 @@ VideoRendererManager::VideoRendererManager():QThread(), d_ptr(new VideoRendererM
 {
    VideoManagerInterface& interface = DBus::VideoManager::instance();
    connect( &interface , SIGNAL(deviceEvent())                           , d_ptr.data(), SLOT(deviceEvent())                           );
-   connect( &interface , SIGNAL(startedDecoding(QString,QString,int,int,bool)), d_ptr.data(), SLOT(startedDecoding(QString,QString,int,int)));
-   connect( &interface , SIGNAL(stoppedDecoding(QString,QString,bool))        , d_ptr.data(), SLOT(stoppedDecoding(QString,QString))        );
+   connect( &interface , &VideoManagerInterface::startedDecoding, d_ptr.data(), &VideoRendererManagerPrivate::startedDecoding);
+   connect( &interface , &VideoManagerInterface::stoppedDecoding, d_ptr.data(), &VideoRendererManagerPrivate::stoppedDecoding);
 }
 
 
diff --git a/xml/callmanager-introspec.xml b/xml/callmanager-introspec.xml
index 0e674230..912b2c3d 100644
--- a/xml/callmanager-introspec.xml
+++ b/xml/callmanager-introspec.xml
@@ -792,5 +792,12 @@
             </tp:docstring>
             </arg>
         </signal>
+
+        <signal name="peerHold" tp:name-for-bindings="peerHold">
+            <tp:added version="2.0.0"/>
+            <arg type="s" name="callID" />
+            <arg type="b" name="peerHolding" />
+        </signal>
+
     </interface>
 </node>
diff --git a/xml/configurationmanager-introspec.xml b/xml/configurationmanager-introspec.xml
index a78f2a20..80384a45 100644
--- a/xml/configurationmanager-introspec.xml
+++ b/xml/configurationmanager-introspec.xml
@@ -532,7 +532,7 @@
 
        <signal name="registrationStateChanged" tp:name-for-bindings="registrationStateChanged">
            <arg type="s" name="accountID"/>
-           <arg type="i" name="registrationState"/>
+           <arg type="s" name="registrationState"/>
            <arg type="i" name="registrationDetail">
                <tp:docstring>
                    The optional account-type specific message code. 0 when not available.
-- 
GitLab