[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