VLC
3.0.15
|
Go to the source code of this file.
Data Structures | |
struct | vlc_mta_holder |
Typedefs | |
typedef struct vlc_mta_holder | vlc_mta_holder |
Functions | |
static void * | MtaMainLoop (void *opaque) |
static bool | vlc_mta_acquire (vlc_object_t *p_parent) |
Ensure an MTA context will be available until vlc_mta_release gets called. More... | |
static void | vlc_mta_release (vlc_object_t *p_parent) |
Releases a reference to the MTA holder. More... | |
typedef struct vlc_mta_holder vlc_mta_holder |
|
inlinestatic |
References vlc_mta_holder::ready_sem, vlc_mta_holder::release_sem, vlc_sem_post(), and vlc_sem_wait().
Referenced by vlc_mta_acquire().
|
inlinestatic |
Ensure an MTA context will be available until vlc_mta_release gets called.
In the background, this will create a thread that does nothing but to keep the MTA refcount greater than 0.
This is usefull in order not to commit a thread to a specific concurrency model. This function is win32 specific.
References vlc_mta_holder::i_refcount, vlc_common_members::libvlc, MtaMainLoop(), vlc_object_t::obj, vlc_mta_holder::ready_sem, vlc_mta_holder::release_sem, vlc_mta_holder::thread, unlikely, var_CreateGetAddress, var_SetAddress, vlc_clone(), vlc_global_lock, vlc_global_unlock, vlc_sem_destroy(), vlc_sem_init(), vlc_sem_wait(), and VLC_THREAD_PRIORITY_LOW.
|
inlinestatic |
Releases a reference to the MTA holder.
When its refcount reaches 0, the thread created by
References vlc_mta_holder::i_refcount, vlc_common_members::libvlc, vlc_object_t::obj, vlc_mta_holder::ready_sem, vlc_mta_holder::release_sem, vlc_mta_holder::thread, var_InheritAddress, var_SetAddress, vlc_global_lock, vlc_global_unlock, vlc_join(), vlc_sem_destroy(), and vlc_sem_post().