]> git.sesse.net Git - vlc/commitdiff
UPnP services discovery: Put the callback lock reference in the p_sys data structure.
authorMirsal Ennaime <mirsal@mirsal-laptop.(none)>
Sun, 21 Dec 2008 19:40:54 +0000 (20:40 +0100)
committerMirsal Ennaime <mirsal@mirsal-laptop.(none)>
Sun, 4 Jan 2009 10:31:53 +0000 (11:31 +0100)
modules/services_discovery/upnp_intel.cpp

index 9a012f6f7651411e78b3c0488b62ba20cd65b9b8..e6b65bb802f9452cdd2b13aa801bb0b5d67f2e2f 100644 (file)
@@ -58,6 +58,7 @@ class MediaServer;
 class MediaServerList;
 class Item;
 class Container;
+class Lockable;
 
 // VLC handle
 
@@ -65,6 +66,7 @@ struct services_discovery_sys_t
 {
     UpnpClient_Handle clientHandle;
     MediaServerList* serverList;
+    Lockable* callbackLock;
 };
 
 // Class definitions...
@@ -269,7 +271,6 @@ vlc_module_end();
 
 // More prototypes...
 
-static Lockable* CallbackLock;
 static int Callback( Upnp_EventType eventType, void* event, void* user_data );
 
 const char* xml_getChildElementValue( IXML_Element* parent,
@@ -299,7 +300,7 @@ static int Open( vlc_object_t *p_this )
     }
 
     p_sys->serverList = new MediaServerList( p_sd );
-    CallbackLock = new Lockable();
+    p_sys->callbackLock = new Lockable();
 
     res = UpnpRegisterClient( Callback, p_sys, &p_sys->clientHandle );
     if( res != UPNP_E_SUCCESS )
@@ -328,7 +329,7 @@ static void Close( vlc_object_t *p_this )
 
     UpnpFinish();
     delete p_sd->p_sys->serverList;
-    delete CallbackLock;
+    delete p_sd->p_sys->callbackLock;
 
     free( p_sd->p_sys );
 }
@@ -406,10 +407,9 @@ IXML_Document* parseBrowseResult( IXML_Document* doc )
 // Handles all UPnP events
 static int Callback( Upnp_EventType eventType, void* event, void* user_data )
 {
-    Locker locker( CallbackLock );
-
     services_discovery_t *p_sd = ( services_discovery_t* ) user_data;
     services_discovery_sys_t* p_sys = p_sd->p_sys;
+    Locker locker( p_sys->callbackLock );
 
     switch( eventType ) {