Commit 9fda9767 authored by Rémi Denis-Courmont's avatar Rémi Denis-Courmont

Move stuff around

parent 12d0d264
......@@ -179,6 +179,15 @@ VLC_EXPORT( void, __vlc_thread_join, ( vlc_object_t *, const char *, int ) );
VLC_EXPORT( int, vlc_clone, (vlc_thread_t *, void * (*) (void *), void *, int) );
VLC_EXPORT( void, vlc_cancel, (vlc_thread_t) );
VLC_EXPORT( int, vlc_join, (vlc_thread_t, void **) );
VLC_EXPORT (void, vlc_control_cancel, (int cmd, ...));
#ifndef LIBVLC_USE_PTHREAD
enum {
VLC_SAVE_CANCEL,
VLC_RESTORE_CANCEL,
VLC_TEST_CANCEL,
};
#endif
#define vlc_thread_ready vlc_object_signal
......@@ -262,6 +271,51 @@ static inline void __vlc_mutex_unlock( const char * psz_file, int i_line,
#define vlc_mutex_destroy( P_MUTEX ) \
__vlc_mutex_destroy( __FILE__, __LINE__, P_MUTEX )
/**
* Save the cancellation state and disable cancellation for the calling thread.
* This function must be called before entering a piece of code that is not
* cancellation-safe.
* @return Previous cancellation state (opaque value).
*/
static inline int vlc_savecancel (void)
{
int state;
#if defined (LIBVLC_USE_PTHREAD)
(void) pthread_setcancelstate (PTHREAD_CANCEL_DISABLE, &state);
#else
vlc_control_cancel (VLC_SAVE_CANCEL, &state);
#endif
return state;
}
/**
* Restore the cancellation state for the calling thread.
* @param state previous state as returned by vlc_savecancel().
* @return Nothing, always succeeds.
*/
static inline void vlc_restorecancel (int state)
{
#if defined (LIBVLC_USE_PTHREAD)
(void) pthread_setcancelstate (state, NULL);
#else
vlc_control_cancel (VLC_RESTORE_CANCEL, state);
#endif
}
/**
* Issues an explicit deferred cancellation point.
* This has no effect if thread cancellation is disabled.
* This can be called when there is a rather slow non-sleeping operation.
*/
static inline void vlc_testcancel (void)
{
#if defined (LIBVLC_USE_PTHREAD)
pthread_testcancel ();
#else
vlc_control_cancel (VLC_TEST_CANCEL);
#endif
}
/*****************************************************************************
* vlc_cond_init: initialize a condition
*****************************************************************************/
......@@ -589,61 +643,6 @@ static inline void barrier (void)
#endif
}
#ifndef LIBVLC_USE_PTHREAD
enum {
VLC_SAVE_CANCEL,
VLC_RESTORE_CANCEL,
VLC_TEST_CANCEL,
};
#endif
VLC_EXPORT (void, vlc_control_cancel, (int cmd, ...));
/**
* Save the cancellation state and disable cancellation for the calling thread.
* This function must be called before entering a piece of code that is not
* cancellation-safe.
* @return Previous cancellation state (opaque value).
*/
static inline int vlc_savecancel (void)
{
int state;
#if defined (LIBVLC_USE_PTHREAD)
(void) pthread_setcancelstate (PTHREAD_CANCEL_DISABLE, &state);
#else
vlc_control_cancel (VLC_SAVE_CANCEL, &state);
#endif
return state;
}
/**
* Restore the cancellation state for the calling thread.
* @param state previous state as returned by vlc_savecancel().
* @return Nothing, always succeeds.
*/
static inline void vlc_restorecancel (int state)
{
#if defined (LIBVLC_USE_PTHREAD)
(void) pthread_setcancelstate (state, NULL);
#else
vlc_control_cancel (VLC_RESTORE_CANCEL, state);
#endif
}
/**
* Issues an explicit deferred cancellation point.
* This has no effect if thread cancellation is disabled.
* This can be called when there is a rather slow non-sleeping operation.
*/
static inline void vlc_testcancel (void)
{
#if defined (LIBVLC_USE_PTHREAD)
pthread_testcancel ();
#else
vlc_control_cancel (VLC_TEST_CANCEL);
#endif
}
/*****************************************************************************
* vlc_thread_create: create a thread
*****************************************************************************/
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment