vlc | branch: master | Rémi Denis-Courmont <[email protected]> | Tue Jul 7 21:47:32 2015 +0300| [901fa0d6c70835c09a60cb0f14fddcf38d6b0670] | committer: Rémi Denis-Courmont
Inline all remaining calls to vlc_cleanup_run() The code size saving in vlc_cleanup_run() is marginal and premature optimization. In practice, vlc_cleanup_run() makes the source code harder to follow/read, confuses static analyzers and generates false positive clobber warnings (on some OSes due to long jumps). It did exercise some of the cleanup code paths though. > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=901fa0d6c70835c09a60cb0f14fddcf38d6b0670 --- include/vlc_threads.h | 3 ++- modules/lua/extension_thread.c | 3 ++- modules/stream_filter/decomp.c | 7 ++++++- modules/video_filter/remoteosd.c | 3 ++- src/android/thread.c | 18 +++++++++++------- src/input/decoder.c | 3 ++- src/input/es_out_timeshift.c | 3 ++- src/input/vlm.c | 3 ++- src/misc/addons.c | 3 ++- src/misc/threads.c | 3 ++- 10 files changed, 33 insertions(+), 16 deletions(-) diff --git a/include/vlc_threads.h b/include/vlc_threads.h index 7837827..3437199 100644 --- a/include/vlc_threads.h +++ b/include/vlc_threads.h @@ -457,7 +457,8 @@ VLC_API void vlc_cond_broadcast(vlc_cond_t *); // -- foobar is now true, do something about it here -- - vlc_cleanup_run(); // release the mutex + vlc_cleanup_pop(); + vlc_mutex_unlock(&lock); @endcode * * \note This function is a cancellation point. In case of thread cancellation, diff --git a/modules/lua/extension_thread.c b/modules/lua/extension_thread.c index 68c32c5..17d4276 100644 --- a/modules/lua/extension_thread.c +++ b/modules/lua/extension_thread.c @@ -428,7 +428,8 @@ static void* Run( void *data ) vlc_mutex_lock( &p_ext->p_sys->command_lock ); } - vlc_cleanup_run( ); + vlc_cleanup_pop( ); + vlc_mutex_unlock( &p_ext->p_sys->command_lock ); msg_Dbg( p_mgr, "Extension thread end: '%s'", p_ext->psz_title ); // Note: At this point, the extension should be deactivated diff --git a/modules/stream_filter/decomp.c b/modules/stream_filter/decomp.c index 06435cd..6bddceb 100644 --- a/modules/stream_filter/decomp.c +++ b/modules/stream_filter/decomp.c @@ -169,7 +169,12 @@ static void *Thread (void *data) break; } } - vlc_cleanup_run (); /* free (buf) */ + vlc_cleanup_pop (); +#ifdef HAVE_VMSPLICE + munmap (buf, bufsize); +#else + free (buf); +#endif } while (!error); diff --git a/modules/video_filter/remoteosd.c b/modules/video_filter/remoteosd.c index 47e60d6..1f9715f 100644 --- a/modules/video_filter/remoteosd.c +++ b/modules/video_filter/remoteosd.c @@ -807,7 +807,8 @@ static void* update_request_thread( void *obj ) break; } } - vlc_cleanup_run(); + vlc_cleanup_pop(); + p_filter->p_sys->b_continue = false; } else { diff --git a/src/android/thread.c b/src/android/thread.c index d39b29c..b9668d1 100644 --- a/src/android/thread.c +++ b/src/android/thread.c @@ -323,11 +323,11 @@ int vlc_cond_timedwait (vlc_cond_t *condvar, vlc_mutex_t *p_mutex, /* pthread */ static void clean_detached_thread(void *data) { - struct vlc_thread *thread = data; + struct vlc_thread *th = data; /* release thread handle */ - vlc_mutex_destroy(&thread->lock); - free(thread); + vlc_mutex_destroy(&th->lock); + free(th); } static void *detached_thread(void *data) @@ -336,9 +336,11 @@ static void *detached_thread(void *data) thread = th; - vlc_cleanup_push(clean_detached_thread, data); + vlc_cleanup_push(clean_detached_thread, th); th->entry(th->data); - vlc_cleanup_run(); + vlc_cleanup_pop(); + vlc_mutex_destroy(&th->lock); + free(th); return NULL; } @@ -358,7 +360,8 @@ static void *joinable_thread(void *data) vlc_cleanup_push(finish_joinable_thread, th); thread = th; ret = th->entry(th->data); - vlc_cleanup_run(); + vlc_cleanup_pop(); + vlc_sem_post(&th->finished); return ret; } @@ -531,7 +534,8 @@ void mwait (mtime_t deadline) vlc_mutex_lock (&lock); mutex_cleanup_push (&lock); while (!vlc_cond_timedwait (&wait, &lock, deadline)); - vlc_cleanup_run (); + vlc_cleanup_pop (); + vlc_mutex_unlock (&lock); vlc_cond_destroy (&wait); vlc_mutex_destroy (&lock); diff --git a/src/input/decoder.c b/src/input/decoder.c index 68d8e7c..253ca99 100644 --- a/src/input/decoder.c +++ b/src/input/decoder.c @@ -1435,7 +1435,8 @@ static void *DecoderThread( void *p_data ) } p_block = vlc_fifo_DequeueUnlocked( p_owner->p_fifo ); - vlc_cleanup_run(); + vlc_cleanup_pop(); + vlc_fifo_Unlock( p_owner->p_fifo ); int canc = vlc_savecancel(); DecoderProcess( p_dec, p_block ); diff --git a/src/input/es_out_timeshift.c b/src/input/es_out_timeshift.c index 511ba73..b1d1b75 100644 --- a/src/input/es_out_timeshift.c +++ b/src/input/es_out_timeshift.c @@ -1011,7 +1011,8 @@ static void *TsRun( void *p_data ) } i_deadline = cmd.i_date + p_ts->i_cmd_delay + p_ts->i_rate_delay + p_ts->i_buffering_delay; - vlc_cleanup_run(); + vlc_cleanup_pop(); + vlc_mutex_unlock( &p_ts->lock ); /* Regulate the speed of command processing to the same one than * reading */ diff --git a/src/input/vlm.c b/src/input/vlm.c index cf69ade..86d63f0 100644 --- a/src/input/vlm.c +++ b/src/input/vlm.c @@ -412,7 +412,8 @@ static void* Manage( void* p_object ) vlc_cond_wait( &vlm->wait_manage, &vlm->lock_manage ); } vlm->input_state_changed = false; - vlc_cleanup_run( ); + vlc_cleanup_pop( ); + vlc_mutex_unlock( &vlm->lock_manage ); int canc = vlc_savecancel (); /* destroy the inputs that wants to die, and launch the next input */ diff --git a/src/misc/addons.c b/src/misc/addons.c index a625a5c..f581f8c 100644 --- a/src/misc/addons.c +++ b/src/misc/addons.c @@ -336,7 +336,8 @@ static void *FinderThread( void *p_data ) } psz_uri = p_manager->p_priv->finder.uris.p_elems[0]; ARRAY_REMOVE( p_manager->p_priv->finder.uris, 0 ); - vlc_cleanup_run(); + vlc_cleanup_pop(); + vlc_mutex_unlock( &p_manager->p_priv->finder.lock ); addons_finder_t *p_finder = vlc_custom_create( p_manager->p_priv->p_parent, sizeof( *p_finder ), "entries finder" ); diff --git a/src/misc/threads.c b/src/misc/threads.c index d805f0d..1972621 100644 --- a/src/misc/threads.c +++ b/src/misc/threads.c @@ -169,6 +169,7 @@ void vlc_sem_wait (vlc_sem_t *sem) while (!sem->value) vlc_cond_wait (&sem->wait, &sem->lock); sem->value--; - vlc_cleanup_run (); + vlc_cleanup_pop (); + vlc_mutex_unlock (&sem->lock); } #endif /* LIBVLC_NEED_SEMAPHORE */ _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
