From: RĂ©mi Duraffort Date: Mon, 28 Jul 2008 07:53:01 +0000 (+0200) Subject: upnp_intel: Fix playlist locking. X-Git-Tag: 0.9.0-test3~183 X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=90a6e08532db5733843224cf0d327f36d0400f73;p=vlc upnp_intel: Fix playlist locking. --- diff --git a/modules/services_discovery/upnp_intel.cpp b/modules/services_discovery/upnp_intel.cpp index df4807a78b..911d3cff72 100644 --- a/modules/services_discovery/upnp_intel.cpp +++ b/modules/services_discovery/upnp_intel.cpp @@ -309,10 +309,12 @@ static void Close( vlc_object_t *p_this ) services_discovery_t *p_sd = ( services_discovery_t* )p_this; services_discovery_sys_t *p_sys = p_sd->p_sys; + vlc_object_lock( p_sys->p_playlist ); playlist_NodeDelete( pl_Get( p_sd ), p_sys->p_node_one, true, true ); playlist_NodeDelete( pl_Get( p_sd ), p_sys->p_node_cat, true, true ); + vlc_object_unlock( p_sys->p_playlist ); pl_Release( p_sd ); free( p_sys ); } @@ -629,8 +631,10 @@ MediaServer::~MediaServer() { if ( _contents ) { + vlc_object_lock( _cookie->serviceDiscovery->p_sys->p_playlist ); playlist_NodeDelete( pl_Get( _cookie->serviceDiscovery ) , _playlistNode, true, true ); + vlc_object_unlock( _cookie->serviceDiscovery->p_sys->p_playlist ); } delete _contents; @@ -927,9 +931,12 @@ bool MediaServerList::addServer( MediaServer* s ) _list.push_back( s ); char* name = strdup( s->getFriendlyName() ); - playlist_item_t* node = playlist_NodeCreate( pl_Get( _cookie->serviceDiscovery ), - name, - _cookie->serviceDiscovery->p_sys->p_node_cat, 0, NULL ); + vlc_object_lock( _cookie->serviceDiscovery->p_sys->p_playlist ); + playlist_item_t* node = playlist_NodeCreate( + pl_Get( _cookie->serviceDiscovery ), name, + _cookie->serviceDiscovery->p_sys->p_node_cat, + 0, NULL ); + vlc_object_unlock( _cookie->serviceDiscovery->p_sys->p_playlist ); free( name ); s->setPlaylistNode( node );