[vlc-commits] fingerprinter: remove mutex only ever used by one thread

Rémi Denis-Courmont git at videolan.org
Wed Jul 8 20:16:30 CEST 2015


vlc | branch: master | Rémi Denis-Courmont <remi at remlab.net> | Wed Jul  8 20:35:48 2015 +0300| [832d5a6d7435397f178c3455e70995ea5752fad0] | committer: Rémi Denis-Courmont

fingerprinter: remove mutex only ever used by one thread

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=832d5a6d7435397f178c3455e70995ea5752fad0
---

 modules/misc/fingerprinter.c |   24 ++++++------------------
 1 file changed, 6 insertions(+), 18 deletions(-)

diff --git a/modules/misc/fingerprinter.c b/modules/misc/fingerprinter.c
index 47db959..cf8e4c8 100644
--- a/modules/misc/fingerprinter.c
+++ b/modules/misc/fingerprinter.c
@@ -46,9 +46,12 @@ struct fingerprinter_sys_t
     {
         vlc_array_t         *queue;
         vlc_mutex_t         lock;
-    } incoming, processing, results;
+    } incoming, results;
 
-    vlc_cond_t              incoming_queue_filled;
+    struct
+    {
+        vlc_array_t         *queue;
+    } processing;
 
     struct
     {
@@ -93,7 +96,6 @@ static void EnqueueRequest( fingerprinter_thread_t *f, fingerprint_request_t *r
     vlc_mutex_lock( &p_sys->incoming.lock );
     vlc_array_append( p_sys->incoming.queue, r );
     vlc_mutex_unlock( &p_sys->incoming.lock );
-    vlc_cond_signal( &p_sys->incoming_queue_filled );
 }
 
 static void QueueIncomingRequests( fingerprinter_sys_t *p_sys )
@@ -101,12 +103,10 @@ static void QueueIncomingRequests( fingerprinter_sys_t *p_sys )
     vlc_mutex_lock( &p_sys->incoming.lock );
     int i = vlc_array_count( p_sys->incoming.queue );
     if ( i == 0 ) goto end;
-    vlc_mutex_lock( &p_sys->processing.lock );
     while( i )
         vlc_array_append( p_sys->processing.queue,
                           vlc_array_item_at_index( p_sys->incoming.queue, --i ) );
     vlc_array_clear( p_sys->incoming.queue );
-    vlc_mutex_unlock( &p_sys->processing.lock );
 end:
     vlc_mutex_unlock(&p_sys->incoming.lock);
 }
@@ -247,10 +247,8 @@ static int Open(vlc_object_t *p_this)
 
     p_sys->incoming.queue = vlc_array_new();
     vlc_mutex_init( &p_sys->incoming.lock );
-    vlc_cond_init( &p_sys->incoming_queue_filled );
 
     p_sys->processing.queue = vlc_array_new();
-    vlc_mutex_init( &p_sys->processing.lock );
 
     p_sys->results.queue = vlc_array_new();
     vlc_mutex_init( &p_sys->results.lock );
@@ -298,12 +296,10 @@ static void Close(vlc_object_t *p_this)
         fingerprint_request_Delete( vlc_array_item_at_index( p_sys->incoming.queue, i ) );
     vlc_array_destroy( p_sys->incoming.queue );
     vlc_mutex_destroy( &p_sys->incoming.lock );
-    vlc_cond_destroy( &p_sys->incoming_queue_filled );
 
     for ( int i = 0; i < vlc_array_count( p_sys->processing.queue ); i++ )
         fingerprint_request_Delete( vlc_array_item_at_index( p_sys->processing.queue, i ) );
     vlc_array_destroy( p_sys->processing.queue );
-    vlc_mutex_destroy( &p_sys->processing.lock );
 
     for ( int i = 0; i < vlc_array_count( p_sys->results.queue ); i++ )
         fingerprint_request_Delete( vlc_array_item_at_index( p_sys->results.queue, i ) );
@@ -343,16 +339,10 @@ static void Run( fingerprinter_thread_t *p_fingerprinter )
     /* main loop */
     for (;;)
     {
-        vlc_mutex_lock( &p_sys->processing.lock );
-        mutex_cleanup_push( &p_sys->processing.lock );
-        vlc_cond_timedwait( &p_sys->incoming_queue_filled, &p_sys->processing.lock, mdate() + 1000000 );
-        vlc_cleanup_run();
+        msleep( CLOCK_FREQ );
 
         QueueIncomingRequests( p_sys );
 
-        vlc_mutex_lock( &p_sys->processing.lock ); // L0
-        mutex_cleanup_push( &p_sys->processing.lock );
-//**
         for ( p_sys->i = 0 ; p_sys->i < vlc_array_count( p_sys->processing.queue ); p_sys->i++ )
         {
             fingerprint_request_t *p_data = vlc_array_item_at_index( p_sys->processing.queue, p_sys->i );
@@ -397,7 +387,5 @@ static void Run( fingerprinter_thread_t *p_fingerprinter )
             var_TriggerCallback( p_fingerprinter, "results-available" );
             vlc_array_clear( p_sys->processing.queue );
         }
-//**
-        vlc_cleanup_run(); // L0
     }
 }



More information about the vlc-commits mailing list