Data Structures | |
| struct | vlc_object_t |
| The main vlc_object_t structure. More... | |
VLC_COMMON_MEMBERS these members are common for all vlc objects | |
| int | vlc_object_t::i_object_id |
| int | vlc_object_t::i_object_type |
| const char * | vlc_object_t::psz_object_type |
| char * | vlc_object_t::psz_object_name |
| char * | vlc_object_t::psz_header |
| int | vlc_object_t::i_flags |
| volatile bool | vlc_object_t::b_error |
| set by the object | |
| volatile bool | vlc_object_t::b_die |
| set by the outside | |
| volatile bool | vlc_object_t::b_dead |
| set by the object | |
| bool | vlc_object_t::b_force |
| set by the outside (eg. | |
| libvlc_int_t * | vlc_object_t::p_libvlc |
| (root of all evil) - 1 | |
| vlc_object_t * | vlc_object_t::p_parent |
| our parent | |
| void * | vlc_object_t::p_private |
| int | vlc_object_t::be_sure_to_add_VLC_COMMON_MEMBERS_to_struct |
| Just a reminder so that people don't cast garbage. | |
Defines | |
| #define | VLC_OBJECT_LIBVLC (-2) |
| #define | VLC_OBJECT_MODULE (-3) |
| #define | VLC_OBJECT_INTF (-4) |
| #define | VLC_OBJECT_PLAYLIST (-5) |
| #define | VLC_OBJECT_INPUT (-7) |
| #define | VLC_OBJECT_DECODER (-8) |
| #define | VLC_OBJECT_VOUT (-9) |
| #define | VLC_OBJECT_AOUT (-10) |
| #define | VLC_OBJECT_PACKETIZER (-13) |
| #define | VLC_OBJECT_ENCODER (-14) |
| #define | VLC_OBJECT_ANNOUNCE (-17) |
| #define | VLC_OBJECT_OPENGL (-21) |
| #define | VLC_OBJECT_OSDMENU (-28) |
| #define | VLC_OBJECT_GENERIC (-666) |
| #define | FIND_PARENT 0x0001 |
| #define | FIND_CHILD 0x0002 |
| #define | FIND_ANYWHERE 0x0003 |
| #define | FIND_STRICT 0x0010 |
| #define | OBJECT_FLAGS_NODBG 0x0001 |
| #define | OBJECT_FLAGS_QUIET 0x0002 |
| #define | OBJECT_FLAGS_NOINTERACT 0x0004 |
| #define | vlc_object_create(a, b) __vlc_object_create( VLC_OBJECT(a), b ) |
| #define | vlc_object_set_destructor(a, b) __vlc_object_set_destructor( VLC_OBJECT(a), b ) |
| #define | vlc_object_detach(a) __vlc_object_detach( VLC_OBJECT(a) ) |
| #define | vlc_object_attach(a, b) __vlc_object_attach( VLC_OBJECT(a), VLC_OBJECT(b) ) |
| #define | vlc_object_find(a, b, c) __vlc_object_find( VLC_OBJECT(a),b,c) |
| #define | vlc_object_find_name(a, b, c) __vlc_object_find_name( VLC_OBJECT(a),b,c) |
| #define | vlc_object_yield(a) __vlc_object_yield( VLC_OBJECT(a) ) |
| #define | vlc_object_release(a) __vlc_object_release( VLC_OBJECT(a) ) |
| #define | vlc_list_find(a, b, c) __vlc_list_find( VLC_OBJECT(a),b,c) |
| #define | vlc_list_children(a) __vlc_list_children( VLC_OBJECT(a) ) |
| #define | vlc_object_dump(a) __vlc_object_dump( VLC_OBJECT(a)) |
| #define | vlc_object_lock(obj) __vlc_object_lock( VLC_OBJECT( obj ) ) |
| #define | vlc_object_unlock(obj) __vlc_object_unlock( VLC_OBJECT( obj ) ) |
| #define | vlc_object_wait(obj) __vlc_object_wait( VLC_OBJECT( obj ) ) |
| #define | vlc_object_timedwait(obj, d) __vlc_object_timedwait( VLC_OBJECT( obj ), d ) |
| #define | vlc_object_signal_unlocked(obj) __vlc_object_signal_unlocked( VLC_OBJECT( obj ) ) |
| #define | vlc_object_signal(obj) __vlc_object_signal( VLC_OBJECT( obj ) ) |
| #define | vlc_object_kill(a) __vlc_object_kill( VLC_OBJECT(a) ) |
| #define | vlc_object_alive(a) __vlc_object_alive( VLC_OBJECT(a) ) |
| #define | vlc_object_waitpipe(a) __vlc_object_waitpipe( VLC_OBJECT(a) ) |
| #define | vlc_object_lock_and_wait(obj) __vlc_object_lock_and_wait( VLC_OBJECT(obj) ) |
Typedefs | |
| typedef void(*) | vlc_destructor_t (struct vlc_object_t *) |
Functions | |
| void * | __vlc_object_create (vlc_object_t *, int) |
| Allocates and initializes a vlc object. | |
| void | __vlc_object_set_destructor (vlc_object_t *, vlc_destructor_t) |
| Set the destructor of a vlc object. | |
| void | __vlc_object_attach (vlc_object_t *, vlc_object_t *) |
| attach object to a parent object | |
| void | __vlc_object_detach (vlc_object_t *) |
| detach object from its parent | |
| void * | vlc_object_get (int) |
| Find an object given its ID. | |
| void * | __vlc_object_find (vlc_object_t *, int, int) |
| find a typed object and increment its refcount | |
| void * | __vlc_object_find_name (vlc_object_t *, const char *, int) |
| find a named object and increment its refcount | |
| void | __vlc_object_yield (vlc_object_t *) |
| Increment an object reference counter. | |
| void | __vlc_object_release (vlc_object_t *) |
| vlc_list_t * | __vlc_list_find (vlc_object_t *, int, int) |
| find a list typed objects and increment their refcount | |
| vlc_list_t * | __vlc_list_children (vlc_object_t *) |
| Gets the list of children of an objects, and increment their reference count. | |
| void | vlc_list_release (vlc_list_t *) |
| void | __vlc_object_dump (vlc_object_t *p_this) |
| void | __vlc_object_lock (vlc_object_t *) |
| Inter-object signaling. | |
| void | __vlc_object_unlock (vlc_object_t *) |
| void | __vlc_object_wait (vlc_object_t *) |
| Waits for the object to be signaled (using vlc_object_signal()). | |
| int | __vlc_object_timedwait (vlc_object_t *, mtime_t) |
| Waits for the object to be signaled (using vlc_object_signal()), or for a timer to expire. | |
| void | __vlc_object_signal_unlocked (vlc_object_t *) |
| Signals an object for which the lock is held. | |
| static void | __vlc_object_signal (vlc_object_t *obj) |
| void | __vlc_object_kill (vlc_object_t *) |
| Requests termination of an object. | |
| static bool | __vlc_object_alive (const vlc_object_t *obj) |
| int | __vlc_object_waitpipe (vlc_object_t *obj) |
| Returns the readable end of a pipe that becomes readable once termination of the object is requested (vlc_object_kill()). | |
| static bool | __vlc_object_lock_and_wait (vlc_object_t *obj) |
| #define FIND_ANYWHERE 0x0003 |
| #define FIND_CHILD 0x0002 |
| #define FIND_PARENT 0x0001 |
| #define FIND_STRICT 0x0010 |
| #define OBJECT_FLAGS_NODBG 0x0001 |
| #define OBJECT_FLAGS_NOINTERACT 0x0004 |
| #define OBJECT_FLAGS_QUIET 0x0002 |
| #define vlc_list_children | ( | a | ) | __vlc_list_children( VLC_OBJECT(a) ) |
| #define vlc_list_find | ( | a, | |||
| b, | |||||
| c | ) | __vlc_list_find( VLC_OBJECT(a),b,c) |
| #define vlc_object_alive | ( | a | ) | __vlc_object_alive( VLC_OBJECT(a) ) |
| #define VLC_OBJECT_ANNOUNCE (-17) |
| #define VLC_OBJECT_AOUT (-10) |
| #define vlc_object_attach | ( | a, | |||
| b | ) | __vlc_object_attach( VLC_OBJECT(a), VLC_OBJECT(b) ) |
| #define vlc_object_create | ( | a, | |||
| b | ) | __vlc_object_create( VLC_OBJECT(a), b ) |
| #define VLC_OBJECT_DECODER (-8) |
| #define vlc_object_detach | ( | a | ) | __vlc_object_detach( VLC_OBJECT(a) ) |
| #define vlc_object_dump | ( | a | ) | __vlc_object_dump( VLC_OBJECT(a)) |
| #define VLC_OBJECT_ENCODER (-14) |
| #define vlc_object_find | ( | a, | |||
| b, | |||||
| c | ) | __vlc_object_find( VLC_OBJECT(a),b,c) |
| #define vlc_object_find_name | ( | a, | |||
| b, | |||||
| c | ) | __vlc_object_find_name( VLC_OBJECT(a),b,c) |
| #define VLC_OBJECT_GENERIC (-666) |
| #define VLC_OBJECT_INPUT (-7) |
| #define VLC_OBJECT_INTF (-4) |
| #define vlc_object_kill | ( | a | ) | __vlc_object_kill( VLC_OBJECT(a) ) |
| #define VLC_OBJECT_LIBVLC (-2) |
| #define vlc_object_lock | ( | obj | ) | __vlc_object_lock( VLC_OBJECT( obj ) ) |
| #define vlc_object_lock_and_wait | ( | obj | ) | __vlc_object_lock_and_wait( VLC_OBJECT(obj) ) |
| #define VLC_OBJECT_MODULE (-3) |
| #define VLC_OBJECT_OPENGL (-21) |
| #define VLC_OBJECT_OSDMENU (-28) |
| #define VLC_OBJECT_PACKETIZER (-13) |
| #define VLC_OBJECT_PLAYLIST (-5) |
| #define vlc_object_release | ( | a | ) | __vlc_object_release( VLC_OBJECT(a) ) |
| #define vlc_object_set_destructor | ( | a, | |||
| b | ) | __vlc_object_set_destructor( VLC_OBJECT(a), b ) |
| #define vlc_object_signal | ( | obj | ) | __vlc_object_signal( VLC_OBJECT( obj ) ) |
| #define vlc_object_signal_unlocked | ( | obj | ) | __vlc_object_signal_unlocked( VLC_OBJECT( obj ) ) |
| #define vlc_object_timedwait | ( | obj, | |||
| d | ) | __vlc_object_timedwait( VLC_OBJECT( obj ), d ) |
| #define vlc_object_unlock | ( | obj | ) | __vlc_object_unlock( VLC_OBJECT( obj ) ) |
| #define VLC_OBJECT_VOUT (-9) |
| #define vlc_object_wait | ( | obj | ) | __vlc_object_wait( VLC_OBJECT( obj ) ) |
| #define vlc_object_waitpipe | ( | a | ) | __vlc_object_waitpipe( VLC_OBJECT(a) ) |
| #define vlc_object_yield | ( | a | ) | __vlc_object_yield( VLC_OBJECT(a) ) |
| typedef void(*) vlc_destructor_t(struct vlc_object_t *) |
| vlc_list_t* __vlc_list_children | ( | vlc_object_t * | obj | ) |
Gets the list of children of an objects, and increment their reference count.
| vlc_list_t* __vlc_list_find | ( | vlc_object_t * | p_this, | |
| int | i_type, | |||
| int | i_mode | |||
| ) |
find a list typed objects and increment their refcount
This function recursively looks for a given object type. i_mode can be one of FIND_PARENT, FIND_CHILD or FIND_ANYWHERE.
| static bool __vlc_object_alive | ( | const vlc_object_t * | obj | ) | [inline, static] |
| void __vlc_object_attach | ( | vlc_object_t * | p_this, | |
| vlc_object_t * | p_parent | |||
| ) |
attach object to a parent object
This function sets p_this as a child of p_parent, and p_parent as a parent of p_this. This link can be undone using vlc_object_detach.
| void* __vlc_object_create | ( | vlc_object_t * | p_this, | |
| int | i_type | |||
| ) |
Allocates and initializes a vlc object.
| i_type | known object type (all of them are negative integer values), or object byte size (always positive). |
| void __vlc_object_detach | ( | vlc_object_t * | p_this | ) |
detach object from its parent
This function removes all links between an object and its parent.
| void __vlc_object_dump | ( | vlc_object_t * | p_this | ) |
| void* __vlc_object_find | ( | vlc_object_t * | p_this, | |
| int | i_type, | |||
| int | i_mode | |||
| ) |
find a typed object and increment its refcount
This function recursively looks for a given object type. i_mode can be one of FIND_PARENT, FIND_CHILD or FIND_ANYWHERE.
| void* __vlc_object_find_name | ( | vlc_object_t * | p_this, | |
| const char * | psz_name, | |||
| int | i_mode | |||
| ) |
find a named object and increment its refcount
This function recursively looks for a given object name. i_mode can be one of FIND_PARENT, FIND_CHILD or FIND_ANYWHERE.
| void __vlc_object_kill | ( | vlc_object_t * | p_this | ) |
Requests termination of an object.
If the object is LibVLC, also request to terminate all its children.
| void __vlc_object_lock | ( | vlc_object_t * | ) |
Inter-object signaling.
| static bool __vlc_object_lock_and_wait | ( | vlc_object_t * | obj | ) | [inline, static] |
| void __vlc_object_release | ( | vlc_object_t * | ) |
| void __vlc_object_set_destructor | ( | vlc_object_t * | p_this, | |
| vlc_destructor_t | pf_destructor | |||
| ) |
Set the destructor of a vlc object.
This function sets the destructor of the vlc object. It will be called when the object is destroyed when the its refcount reaches 0. (It is called by the internal function vlc_object_destroy())
| static void __vlc_object_signal | ( | vlc_object_t * | obj | ) | [inline, static] |
| void __vlc_object_signal_unlocked | ( | vlc_object_t * | obj | ) |
Signals an object for which the lock is held.
At least one thread currently sleeping in vlc_object_wait() or vlc_object_timedwait() will wake up, assuming that there is at least one such thread in the first place. Otherwise, it is undefined whether the signal will be lost or will wake up one or more thread later.
| int __vlc_object_timedwait | ( | vlc_object_t * | obj, | |
| mtime_t | deadline | |||
| ) |
Waits for the object to be signaled (using vlc_object_signal()), or for a timer to expire.
It is asserted that the caller holds the object lock.
| void __vlc_object_unlock | ( | vlc_object_t * | ) |
| void __vlc_object_wait | ( | vlc_object_t * | obj | ) |
Waits for the object to be signaled (using vlc_object_signal()).
It is assumed that the caller has locked the object. This function will unlock the object, and lock it again before returning. If the object was signaled before the caller locked the object, it is undefined whether the signal will be lost or will wake the process.
| int __vlc_object_waitpipe | ( | vlc_object_t * | obj | ) |
Returns the readable end of a pipe that becomes readable once termination of the object is requested (vlc_object_kill()).
This can be used to wake-up out of a select() or poll() event loop, such typically when doing network I/O.
Note that the pipe will remain the same for the lifetime of the object. DO NOT read the pipe nor close it yourself. Ever.
| obj | object that would be "killed" |
| void __vlc_object_yield | ( | vlc_object_t * | ) |
Increment an object reference counter.
| void vlc_list_release | ( | vlc_list_t * | ) |
| void* vlc_object_get | ( | int | i_id | ) |
Find an object given its ID.
This function looks for the object whose i_object_id field is i_id. This function is slow, and often used to hide bugs. Do not use it. If you need to retain reference to an object, yield the object pointer with vlc_object_yield(), use the pointer as your reference, and call vlc_object_release() when you're done.
volatile bool vlc_object_t::b_dead [inherited] |
set by the object
volatile bool vlc_object_t::b_die [inherited] |
set by the outside
volatile bool vlc_object_t::b_error [inherited] |
set by the object
bool vlc_object_t::b_force [inherited] |
set by the outside (eg.
int vlc_object_t::be_sure_to_add_VLC_COMMON_MEMBERS_to_struct [inherited] |
Just a reminder so that people don't cast garbage.
int vlc_object_t::i_flags [inherited] |
int vlc_object_t::i_object_id [inherited] |
int vlc_object_t::i_object_type [inherited] |
libvlc_int_t* vlc_object_t::p_libvlc [inherited] |
(root of all evil) - 1
vlc_object_t* vlc_object_t::p_parent [inherited] |
our parent
void* vlc_object_t::p_private [inherited] |
char* vlc_object_t::psz_header [inherited] |
char* vlc_object_t::psz_object_name [inherited] |
const char* vlc_object_t::psz_object_type [inherited] |
1.5.1