Browse Source

upnp: use vlc::threads

pull/103/head
Rémi Denis-Courmont 7 years ago
parent
commit
6f2fca8b4c
  1. 13
      modules/services_discovery/upnp-wrapper.cpp
  2. 3
      modules/services_discovery/upnp-wrapper.hpp

13
modules/services_discovery/upnp-wrapper.cpp

@ -34,11 +34,10 @@
#endif
#include "upnp-wrapper.hpp"
#include <vlc_cxx_helpers.hpp>
UpnpInstanceWrapper* UpnpInstanceWrapper::s_instance;
UpnpInstanceWrapper::Listeners UpnpInstanceWrapper::s_listeners;
vlc_mutex_t UpnpInstanceWrapper::s_lock = VLC_STATIC_MUTEX;
vlc::threads::mutex UpnpInstanceWrapper::s_lock;
UpnpInstanceWrapper::UpnpInstanceWrapper()
: m_handle( -1 )
@ -54,7 +53,7 @@ UpnpInstanceWrapper::~UpnpInstanceWrapper()
UpnpInstanceWrapper *UpnpInstanceWrapper::get(vlc_object_t *p_obj)
{
vlc_mutex_locker lock( &s_lock );
vlc::threads::mutex_locker lock( s_lock );
if ( s_instance == NULL )
{
UpnpInstanceWrapper* instance = new(std::nothrow) UpnpInstanceWrapper;
@ -113,7 +112,7 @@ UpnpInstanceWrapper *UpnpInstanceWrapper::get(vlc_object_t *p_obj)
void UpnpInstanceWrapper::release()
{
UpnpInstanceWrapper *p_delete = NULL;
vlc::threads::mutex_locker lock( &s_lock );
vlc::threads::mutex_locker lock( s_lock );
if (--s_instance->m_refcount == 0)
{
p_delete = s_instance;
@ -129,7 +128,7 @@ UpnpClient_Handle UpnpInstanceWrapper::handle() const
int UpnpInstanceWrapper::Callback(Upnp_EventType event_type, UpnpEventPtr p_event, void *p_user_data)
{
vlc::threads::mutex_locker lock( &s_lock );
vlc::threads::mutex_locker lock( s_lock );
for (Listeners::iterator iter = s_listeners.begin(); iter != s_listeners.end(); ++iter)
{
(*iter)->onEvent(event_type, p_event, p_user_data);
@ -140,14 +139,14 @@ int UpnpInstanceWrapper::Callback(Upnp_EventType event_type, UpnpEventPtr p_even
void UpnpInstanceWrapper::addListener(ListenerPtr listener)
{
vlc::threads::mutex_locker lock( &s_lock );
vlc::threads::mutex_locker lock( s_lock );
if ( std::find( s_listeners.begin(), s_listeners.end(), listener) == s_listeners.end() )
s_listeners.push_back( std::move(listener) );
}
void UpnpInstanceWrapper::removeListener(ListenerPtr listener)
{
vlc::threads::mutex_locker lock( &s_lock );
vlc::threads::mutex_locker lock( s_lock );
Listeners::iterator iter = std::find( s_listeners.begin(), s_listeners.end(), listener );
if ( iter != s_listeners.end() )
s_listeners.erase( iter );

3
modules/services_discovery/upnp-wrapper.hpp

@ -29,6 +29,7 @@
#include <vlc_common.h>
#include <vlc_charset.h>
#include <vlc_cxx_helpers.hpp>
#include <memory>
#include <vector>
@ -69,7 +70,7 @@ public:
private:
static UpnpInstanceWrapper* s_instance;
static vlc_mutex_t s_lock;
static vlc::threads::mutex s_lock;
UpnpClient_Handle m_handle;
int m_refcount;
typedef std::shared_ptr<Listener> ListenerPtr;

Loading…
Cancel
Save