void *(*entry)(void*);
void *data;
- vlc_atomic_t killable;
vlc_atomic_t killed;
vlc_atomic_t finished;
+ bool killable;
bool detached;
};
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);
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;
return true;
int oldstate = vlc_atomic_get(&thread->killable);
- vlc_atomic_set(&thread->killable, false);
+ thread->killable = false;
return oldstate;
}
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;