[vlc-commits] chromecast: Directly send request instead of using interruptions
Hugo Beauzée-Luyssen
git at videolan.org
Fri Mar 3 14:53:28 CET 2017
vlc | branch: master | Hugo Beauzée-Luyssen <hugo at beauzee.fr> | Thu Mar 2 10:01:20 2017 +0100| [b887d8d37309434f1ad70da13ec6b1ad709cb65d] | committer: Hugo Beauzée-Luyssen
chromecast: Directly send request instead of using interruptions
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=b887d8d37309434f1ad70da13ec6b1ad709cb65d
---
modules/stream_out/chromecast/chromecast.h | 6 +--
modules/stream_out/chromecast/chromecast_ctrl.cpp | 46 ++++++++---------------
2 files changed, 16 insertions(+), 36 deletions(-)
diff --git a/modules/stream_out/chromecast/chromecast.h b/modules/stream_out/chromecast/chromecast.h
index d187061..d491a92 100644
--- a/modules/stream_out/chromecast/chromecast.h
+++ b/modules/stream_out/chromecast/chromecast.h
@@ -131,7 +131,7 @@ private:
vlc_tls_creds_t *m_creds;
vlc_tls_t *m_tls;
unsigned m_receiver_requestId;
- unsigned m_requestId;
+ std::atomic_uint m_requestId;
std::string m_serverIp;
};
@@ -158,8 +158,6 @@ private:
void processMessage(const castchannel::CastMessage &msg);
- void notifySendRequest();
-
void setPauseState(bool paused);
void setTitle( const char *psz_title );
@@ -212,8 +210,6 @@ private:
ChromecastCommunication m_communication;
States m_state;
- std::atomic_bool m_requested_stop;
- std::atomic_bool m_requested_seek;
std::string m_artwork;
std::string m_title;
diff --git a/modules/stream_out/chromecast/chromecast_ctrl.cpp b/modules/stream_out/chromecast/chromecast_ctrl.cpp
index fc7f84b..6874341 100644
--- a/modules/stream_out/chromecast/chromecast_ctrl.cpp
+++ b/modules/stream_out/chromecast/chromecast_ctrl.cpp
@@ -82,8 +82,6 @@ intf_sys_t::intf_sys_t(vlc_object_t * const p_this, int port, std::string device
, m_streaming_port(port)
, m_communication( p_this, device_addr.c_str(), device_port )
, m_state( Authenticating )
- , m_requested_stop(false)
- , m_requested_seek(false)
, m_ctl_thread_interrupt(p_interrupt)
, m_time_playback_started( VLC_TS_INVALID )
, m_ts_local_start( VLC_TS_INVALID )
@@ -543,25 +541,6 @@ bool intf_sys_t::handleMessages()
bool b_timeout = false;
mtime_t i_begin_time = mdate();
- if ( m_requested_stop.exchange(false) && !m_mediaSessionId.empty() )
- {
- m_communication.msgPlayerStop( m_appTransportId, m_mediaSessionId );
- }
-
- if ( m_requested_seek.exchange(false) && !m_mediaSessionId.empty() )
- {
- char current_time[32];
- m_seek_request_time = mdate() + SEEK_FORWARD_OFFSET;
- if( snprintf( current_time, sizeof(current_time), "%.3f", double( m_seek_request_time ) / 1000000.0 ) >= (int)sizeof(current_time) )
- {
- msg_Err( m_module, "snprintf() truncated string for mediaSessionId" );
- current_time[sizeof(current_time) - 1] = '\0';
- }
- // No need to change the state to "Seeking" it was already done upon requesting
- /* send a fake time to seek to, to make sure the device flushes its buffers */
- m_communication.msgPlayerSeek( m_appTransportId, m_mediaSessionId, current_time );
- }
-
/* Packet structure:
* +------------------------------------+------------------------------+
* | Payload size (uint32_t big endian) | Payload data |
@@ -577,7 +556,6 @@ bool intf_sys_t::handleMessages()
&b_timeout );
if ( i_ret < 0 )
{
- // If we need to process a command, let it happen at next iteration
if ( errno == EINTR )
return true;
// An error occured, we give up
@@ -625,25 +603,31 @@ bool intf_sys_t::handleMessages()
return true;
}
-void intf_sys_t::notifySendRequest()
-{
- vlc_interrupt_raise( m_ctl_thread_interrupt );
-}
-
void intf_sys_t::requestPlayerStop()
{
- m_requested_stop = true;
- notifySendRequest();
+ vlc_mutex_locker locker(&m_lock);
+ if ( m_mediaSessionId.empty() == true )
+ return;
+ m_communication.msgPlayerStop( m_appTransportId, m_mediaSessionId );
}
void intf_sys_t::requestPlayerSeek(mtime_t pos)
{
vlc_mutex_locker locker(&m_lock);
+ if ( m_mediaSessionId.empty() == true )
+ return;
if ( pos != VLC_TS_INVALID )
m_ts_local_start = pos;
- m_requested_seek = true;
+ char current_time[32];
+ m_seek_request_time = mdate() + SEEK_FORWARD_OFFSET;
+ if( snprintf( current_time, sizeof(current_time), "%.3f", double( m_seek_request_time ) / 1000000.0 ) >= (int)sizeof(current_time) )
+ {
+ msg_Err( m_module, "snprintf() truncated string for mediaSessionId" );
+ current_time[sizeof(current_time) - 1] = '\0';
+ }
+ /* send a fake time to seek to, to make sure the device flushes its buffers */
+ m_communication.msgPlayerSeek( m_appTransportId, m_mediaSessionId, current_time );
setState( Seeking );
- notifySendRequest();
}
void intf_sys_t::setPauseState(bool paused)
More information about the vlc-commits
mailing list