[vlc-devel] [PATCH 10/33] chromecast: make conn_status private and use getter/setter

Steve Lhomme robux4 at videolabs.io
Wed Dec 23 12:58:29 CET 2015


---
 modules/stream_out/chromecast/cast.cpp            | 14 ++++++------
 modules/stream_out/chromecast/chromecast.h        | 27 ++++++++++++++++++++---
 modules/stream_out/chromecast/chromecast_ctrl.cpp | 16 +++++++-------
 3 files changed, 39 insertions(+), 18 deletions(-)

diff --git a/modules/stream_out/chromecast/cast.cpp b/modules/stream_out/chromecast/cast.cpp
index fed230c..cbbda7f 100644
--- a/modules/stream_out/chromecast/cast.cpp
+++ b/modules/stream_out/chromecast/cast.cpp
@@ -212,7 +212,7 @@ static int Open(vlc_object_t *p_this)
         Clean(p_stream);
         return VLC_EGENERIC;
     }
-    p_sys->p_intf->conn_status = CHROMECAST_TLS_CONNECTED;
+    p_sys->p_intf->setConnectionStatus(CHROMECAST_TLS_CONNECTED);
 
     char psz_localIP[NI_MAXNUMERICHOST];
     if (net_GetSockAddress(p_sys->i_sock_fd, psz_localIP, NULL))
@@ -265,7 +265,7 @@ static int Open(vlc_object_t *p_this)
     int i_ret = 0;
     const mtime_t deadline = mdate() + 6 * CLOCK_FREQ;
     vlc_mutex_lock(&p_intf->lock);
-    while (p_sys->p_intf->conn_status != CHROMECAST_MEDIA_LOAD_SENT)
+    while (p_sys->p_intf->getConnectionStatus() != CHROMECAST_MEDIA_LOAD_SENT)
     {
         i_ret = vlc_cond_timedwait(&p_sys->p_intf->loadCommandCond, &p_intf->lock, deadline);
         if (i_ret == ETIMEDOUT)
@@ -305,7 +305,7 @@ static void Close(vlc_object_t *p_this)
     vlc_cancel(p_sys->chromecastThread);
     vlc_join(p_sys->chromecastThread, NULL);
 
-    switch (p_sys->p_intf->conn_status)
+    switch (p_sys->p_intf->getConnectionStatus())
     {
     case CHROMECAST_MEDIA_LOAD_SENT:
     case CHROMECAST_APP_STARTED:
@@ -387,7 +387,7 @@ static void disconnectChromecast(sout_stream_t *p_stream)
         vlc_tls_SessionDelete(p_sys->p_tls);
         vlc_tls_Delete(p_sys->p_creds);
         p_sys->p_tls = NULL;
-        p_sys->p_intf->conn_status = CHROMECAST_DISCONNECTED;
+        p_sys->p_intf->setConnectionStatus(CHROMECAST_DISCONNECTED);
     }
 }
 
@@ -599,7 +599,7 @@ static void* chromecastThread(void* p_data)
         {
             msg_Err(p_stream, "The connection to the Chromecast died.");
             vlc_mutex_locker locker(&p_sys->p_intf->lock);
-            p_sys->p_intf->conn_status = CHROMECAST_CONNECTION_DEAD;
+            p_sys->p_intf->setConnectionStatus(CHROMECAST_CONNECTION_DEAD);
             break;
         }
 
@@ -628,12 +628,12 @@ static void* chromecastThread(void* p_data)
             {
                 msg_Err(p_stream, "The connection to the Chromecast died.");
                 vlc_mutex_locker locker(&p_sys->p_intf->lock);
-                p_sys->p_intf->conn_status = CHROMECAST_CONNECTION_DEAD;
+                p_sys->p_intf->setConnectionStatus(CHROMECAST_CONNECTION_DEAD);
             }
         }
 
         vlc_mutex_lock(&p_sys->p_intf->lock);
-        if ( p_sys->p_intf->conn_status == CHROMECAST_CONNECTION_DEAD )
+        if ( p_sys->p_intf->getConnectionStatus() == CHROMECAST_CONNECTION_DEAD )
         {
             vlc_mutex_unlock(&p_sys->p_intf->lock);
             break;
diff --git a/modules/stream_out/chromecast/chromecast.h b/modules/stream_out/chromecast/chromecast.h
index e982a38..bc827b6 100644
--- a/modules/stream_out/chromecast/chromecast.h
+++ b/modules/stream_out/chromecast/chromecast.h
@@ -31,6 +31,7 @@
 
 #include <vlc_common.h>
 #include <vlc_plugin.h>
+#include <vlc_sout.h>
 
 #include <queue>
 
@@ -71,6 +72,24 @@ struct intf_sys_t
 
     void msgAuth();
     void msgReceiverClose(std::string destinationId);
+
+    connection_status getConnectionStatus() const
+    {
+        return conn_status;
+    }
+
+    void setConnectionStatus(connection_status status)
+    {
+        if (conn_status != status)
+        {
+#ifndef NDEBUG
+            msg_Dbg(p_stream, "change Chromecast connection status from %d to %d", conn_status, status);
+#endif
+            conn_status = status;
+            vlc_cond_broadcast(&loadCommandCond);
+        }
+    }
+
     void msgPing();
     void msgPong();
     void msgConnect(const std::string & destinationId = DEFAULT_CHOMECAST_RECEIVER);
@@ -80,12 +99,14 @@ struct intf_sys_t
 
     void msgPlayerLoad();
 
-    enum connection_status conn_status;
-
     std::queue<castchannel::CastMessage> messagesToSend;
-    unsigned i_requestId;
 
     void processMessage(const castchannel::CastMessage &msg);
+
+private:
+    enum connection_status conn_status;
+
+    unsigned i_requestId;
 };
 
 #endif /* VLC_CHROMECAST_H */
diff --git a/modules/stream_out/chromecast/chromecast_ctrl.cpp b/modules/stream_out/chromecast/chromecast_ctrl.cpp
index 83e80a0..9930082 100644
--- a/modules/stream_out/chromecast/chromecast_ctrl.cpp
+++ b/modules/stream_out/chromecast/chromecast_ctrl.cpp
@@ -111,7 +111,7 @@ void intf_sys_t::processMessage(const castchannel::CastMessage &msg)
         else
         {
             vlc_mutex_locker locker(&lock);
-            conn_status = CHROMECAST_AUTHENTICATED;
+            setConnectionStatus(CHROMECAST_AUTHENTICATED);
             msgConnect(DEFAULT_CHOMECAST_RECEIVER);
             msgReceiverLaunchApp();
         }
@@ -164,25 +164,25 @@ void intf_sys_t::processMessage(const castchannel::CastMessage &msg)
             if ( p_app )
             {
                 if (!appTransportId.empty()
-                        && conn_status == CHROMECAST_AUTHENTICATED)
+                        && getConnectionStatus() == CHROMECAST_AUTHENTICATED)
                 {
-                    conn_status = CHROMECAST_APP_STARTED;
+                    setConnectionStatus(CHROMECAST_APP_STARTED);
                     msgConnect(appTransportId);
                     msgPlayerLoad();
-                    conn_status = CHROMECAST_MEDIA_LOAD_SENT;
+                    setConnectionStatus(CHROMECAST_MEDIA_LOAD_SENT);
                     vlc_cond_signal(&loadCommandCond);
                 }
             }
             else
             {
-                switch(conn_status)
+                switch(getConnectionStatus())
                 {
                 /* If the app is no longer present */
                 case CHROMECAST_APP_STARTED:
                 case CHROMECAST_MEDIA_LOAD_SENT:
                     msg_Warn(p_stream, "app is no longer present. closing");
                     msgReceiverClose(appTransportId);
-                    conn_status = CHROMECAST_CONNECTION_DEAD;
+                    setConnectionStatus(CHROMECAST_CONNECTION_DEAD);
                     // ft
                 default:
                     break;
@@ -215,7 +215,7 @@ void intf_sys_t::processMessage(const castchannel::CastMessage &msg)
             msg_Err(p_stream, "Media load failed");
             msgReceiverClose(appTransportId);
             vlc_mutex_lock(&lock);
-            conn_status = CHROMECAST_CONNECTION_DEAD;
+            setConnectionStatus(CHROMECAST_CONNECTION_DEAD);
             vlc_mutex_unlock(&lock);
         }
         else
@@ -236,7 +236,7 @@ void intf_sys_t::processMessage(const castchannel::CastMessage &msg)
         {
             msg_Warn(p_stream, "received close message");
             vlc_mutex_lock(&lock);
-            conn_status = CHROMECAST_CONNECTION_DEAD;
+            setConnectionStatus(CHROMECAST_CONNECTION_DEAD);
             vlc_mutex_unlock(&lock);
         }
         else
-- 
2.6.3



More information about the vlc-devel mailing list