[vlc-devel] [vlc-commits] Android: thread->killable does not need to be atomic
Rafaël Carré
funman at videolan.org
Sat Oct 13 12:42:53 CEST 2012
Le 12/10/2012 21:37, Rémi Denis-Courmont a écrit :
> vlc | branch: master | Rémi Denis-Courmont <remi at remlab.net> | Fri Oct 12 22:10:01 2012 +0300| [fc921ab8647eee4287acdda582176cb2788fbab8] | committer: Rémi Denis-Courmont
>
> Android: thread->killable does not need to be atomic
>
>> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=fc921ab8647eee4287acdda582176cb2788fbab8
> ---
>
> src/android/thread.c | 12 +++++-------
> 1 file changed, 5 insertions(+), 7 deletions(-)
>
> diff --git a/src/android/thread.c b/src/android/thread.c
> index c6bdacf..e8b361c 100644
> --- a/src/android/thread.c
> +++ b/src/android/thread.c
> @@ -172,9 +172,9 @@ struct vlc_thread
> void *(*entry)(void*);
> void *data;
>
> - vlc_atomic_t killable;
> vlc_atomic_t killed;
> vlc_atomic_t finished;
> + bool killable;
> bool detached;
> };
>
> @@ -306,9 +306,9 @@ static int vlc_clone_attr (vlc_thread_t *th, pthread_attr_t *attr,
> return ENOMEM;
> }
>
> - vlc_atomic_set(&thread->killable, true);
> vlc_atomic_set(&thread->killed, false);
> vlc_atomic_set(&thread->finished, false);
> + thread->killable = true;
> int state = PTHREAD_CREATE_JOINABLE;
> if (attr)
> pthread_attr_getdetachstate(attr, &state);
> @@ -371,8 +371,6 @@ int vlc_set_priority (vlc_thread_t th, int priority)
> void vlc_cancel (vlc_thread_t thread_id)
> {
> vlc_atomic_set(&thread_id->killed, true);
> - if (!vlc_atomic_get(&thread_id->killable))
> - return;
>
> vlc_mutex_lock(&thread_id->lock);
> vlc_cond_t *cond = thread_id->cond;
> @@ -388,7 +386,7 @@ int vlc_savecancel (void)
> return true;
>
> int oldstate = vlc_atomic_get(&thread->killable);
You forgot this one
> - vlc_atomic_set(&thread->killable, false);
> + thread->killable = false;
> return oldstate;
> }
>
> @@ -397,14 +395,14 @@ void vlc_restorecancel (int state)
> if (!thread) /* not created by VLC, can't be cancelled */
> return;
>
> - vlc_atomic_set(&thread->killable, state);
> + thread->killable = state;
> }
>
> void vlc_testcancel (void)
> {
> if (!thread) /* not created by VLC, can't be cancelled */
> return;
> - if (!vlc_atomic_get(&thread->killable))
> + if (!thread->killable)
> return;
> if (!vlc_atomic_get(&thread->killed))
> return;
>
> _______________________________________________
> vlc-commits mailing list
> vlc-commits at videolan.org
> http://mailman.videolan.org/listinfo/vlc-commits
>
More information about the vlc-devel
mailing list