|
VLC
2.1.0-git
|
This file contains the functions to handle the vlc_object_t type. More...

Macros | |
| #define | MYCASE(type, nice) |
Functions | |
| static int | DumpCommand (vlc_object_t *, char const *, vlc_value_t, vlc_value_t, void *) |
| static vlc_object_t * | FindName (vlc_object_internals_t *, const char *) |
| static void | PrintObject (vlc_object_internals_t *, const char *) |
| static void | DumpStructure (vlc_object_internals_t *, unsigned, char *) |
| static vlc_list_t * | NewList (int) |
| static void | vlc_object_destroy (vlc_object_t *p_this) |
| Destroys a VLC object once it has no more references. | |
| static void | libvlc_lock (libvlc_int_t *p_libvlc) |
| static void | libvlc_unlock (libvlc_int_t *p_libvlc) |
| void * | vlc_custom_create (((vlc_object_t *)(vlc_object_t *parent)), size_t length, const char *typename) |
| void * | vlc_object_create (((vlc_object_t *)(vlc_object_t *p_this)), size_t i_size) |
| Allocates and initializes a vlc object. | |
| void | vlc_object_set_destructor (((vlc_object_t *)(vlc_object_t *p_this)), vlc_destructor_t pf_destructor) |
| Set the destructor of a vlc object. | |
| int | vlc_object_set_name (((vlc_object_t *)(vlc_object_t *obj)), const char *name) |
| char * | vlc_object_get_name (((vlc_object_t *)(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()). | |
| void | vlc_object_kill (((vlc_object_t *)(vlc_object_t *p_this))) |
| Requests termination of an object, cancels the object thread, and make the object wait pipe (if it exists) readable. | |
| vlc_object_t * | vlc_object_find_name (((vlc_object_t *)(vlc_object_t *p_this)), const char *psz_name) |
| Finds a named object and increment its reference count. | |
| void * | vlc_object_hold (((vlc_object_t *)(vlc_object_t *p_this))) |
| Increment an object reference counter. | |
| void | vlc_object_release (((vlc_object_t *)(vlc_object_t *p_this))) |
| Drops a reference to an object (decrements the reference count). | |
| bool | vlc_object_alive (((vlc_object_t *)(vlc_object_t *obj))) |
| This function returns true, except when it returns false. | |
| vlc_list_t * | vlc_list_children (((vlc_object_t *)(vlc_object_t *obj))) |
| Gets the list of children of an objects, and increment their reference count. | |
| static void | DumpVariable (const void *data, const VISIT which, const int depth) |
| void | vlc_list_release (vlc_list_t *p_list) |
Variables | |
| static vlc_mutex_t | name_lock = PTHREAD_MUTEX_INITIALIZER |
| static vlc_mutex_t | pipe_lock = PTHREAD_MUTEX_INITIALIZER |
This file contains the functions to handle the vlc_object_t type.
Unless otherwise stated, functions in this file are not cancellation point. All functions in this file are safe w.r.t. deferred cancellation.
| #define MYCASE | ( | type, | |
| nice | |||
| ) |
Referenced by DumpVariable().
|
static |
< Object not found
< No error
References DumpStructure(), DumpVariable(), libvlc_lock(), libvlc_unlock(), MAX_DUMPSTRUCTURE_DEPTH, vlc_object_t::p_libvlc, PrintObject(), vlc_value_t::psz_string, twalk(), VLC_ENOOBJ, vlc_internals, vlc_mutex_lock(), vlc_mutex_unlock(), VLC_OBJECT, vlc_object_find_name, vlc_object_release, and VLC_SUCCESS.
Referenced by vlc_custom_create(), and vlc_object_destroy().
|
static |
References vlc_object_internals::first, MAX_DUMPSTRUCTURE_DEPTH, msg_Warn, vlc_object_internals::next, PrintObject(), and vlc_externals.
Referenced by DumpCommand().
|
static |
References vlc_value_t::b_bool, vlc_value_t::coords, vlc_value_t::f_float, variable_t::i_entries, vlc_value_t::i_int, vlc_value_t::i_time, variable_t::i_type, leaf, MYCASE, vlc_value_t::p_address, postorder, variable_t::psz_name, vlc_value_t::psz_string, variable_t::psz_text, variable_t::val, VLC_VAR_ADDRESS, VLC_VAR_BOOL, VLC_VAR_CLASS, VLC_VAR_COORDS, VLC_VAR_FLOAT, VLC_VAR_HASCHOICE, VLC_VAR_INTEGER, VLC_VAR_ISCOMMAND, VLC_VAR_STRING, VLC_VAR_TIME, VLC_VAR_TYPE, VLC_VAR_VOID, vlc_value_t::x, and vlc_value_t::y.
Referenced by DumpCommand().
|
static |
References vlc_object_internals::first, vlc_object_internals::next, vlc_object_internals::psz_name, vlc_externals, and vlc_object_hold.
Referenced by vlc_object_find_name().
|
static |
References libvlc_priv(), and vlc_mutex_lock().
Referenced by DumpCommand(), vlc_custom_create(), vlc_list_children(), vlc_object_find_name(), and vlc_object_release().
|
static |
References libvlc_priv(), and vlc_mutex_unlock().
Referenced by DumpCommand(), vlc_custom_create(), vlc_list_children(), vlc_object_find_name(), and vlc_object_release().
|
static |
References vlc_list_t::i_count, and vlc_list_t::p_values.
Referenced by vlc_list_children().
|
static |
References name_lock, vlc_object_internals::psz_name, psz_name, vlc_object_internals::refs, vlc_externals, vlc_mutex_lock(), vlc_mutex_unlock(), vlc_restorecancel(), and vlc_savecancel().
Referenced by DumpCommand(), and DumpStructure().
| void* vlc_custom_create | ( | ((vlc_object_t *)(vlc_object_t *parent)) | , |
| size_t | length, | ||
| const char * | typename | ||
| ) |
References vlc_object_internals::alive, atomic_init, vlc_object_t::b_force, DumpCommand(), vlc_object_internals::first, vlc_object_t::i_flags, libvlc_lock(), libvlc_priv(), libvlc_unlock(), likely, vlc_object_internals::next, vlc_object_t::p_libvlc, vlc_object_t::p_parent, vlc_object_internals::pf_destructor, vlc_object_internals::pipes, vlc_object_internals::prev, vlc_object_t::psz_header, vlc_object_internals::psz_name, vlc_object_t::psz_object_type, vlc_object_internals::refs, unlikely, var_AddCallback, var_Create, vlc_object_internals::var_lock, vlc_object_internals::var_root, vlc_object_internals::var_wait, vlc_cond_init(), vlc_internals, vlc_mutex_init(), vlc_object_hold, vlc_restorecancel(), vlc_savecancel(), VLC_VAR_ISCOMMAND, and VLC_VAR_STRING.
| vlc_list_t* vlc_list_children | ( | ((vlc_object_t *)(vlc_object_t *obj)) | ) |
Gets the list of children of an objects, and increment their reference count.
References count, libvlc_lock(), libvlc_unlock(), likely, NewList(), vlc_object_internals::next, vlc_object_t::p_libvlc, vlc_value_t::p_object, vlc_list_t::p_values, vlc_externals, vlc_internals, and vlc_object_hold.
| bool vlc_object_alive | ( | ((vlc_object_t *)(vlc_object_t *obj)) | ) |
This function returns true, except when it returns false.
References vlc_object_internals::alive, and vlc_internals.
| void* vlc_object_create | ( | ((vlc_object_t *)(vlc_object_t *p_this)) | , |
| size_t | i_size | ||
| ) |
Allocates and initializes a vlc object.
| i_size | object byte size |
References vlc_custom_create.
|
static |
Destroys a VLC object once it has no more references.
This function must be called with cancellation disabled (currently).
References DumpCommand(), libvlc_priv(), vlc_object_t::p_libvlc, vlc_object_internals::pf_destructor, vlc_object_internals::pipes, vlc_object_t::psz_header, vlc_object_internals::psz_name, unlikely, var_DelCallback, var_DestroyAll(), vlc_object_internals::var_lock, vlc_object_internals::var_wait, vlc_cond_destroy(), vlc_internals, vlc_mutex_destroy(), and VLC_OBJECT.
Referenced by vlc_object_release().
| vlc_object_t* vlc_object_find_name | ( | ((vlc_object_t *)(vlc_object_t *p_this)) | , |
| const char * | psz_name | ||
| ) |
Finds a named object and increment its reference count.
Beware that objects found in this manner can be "owned" by another thread, be of any type, and be attached to any module (if any). With such an object reference, you can set or get object variables, emit log messages, and read write-once object parameters (psz_object_type, etc). You CANNOT cast the object to a more specific object type, and you definitely cannot invoke object type-specific callbacks with this.
| p_this | object to search from |
| psz_name | name of the object to search for |
References FindName(), libvlc_lock(), libvlc_unlock(), msg_Err, name_lock, vlc_object_t::p_libvlc, vlc_internals, vlc_mutex_lock(), and vlc_mutex_unlock().
| char* vlc_object_get_name | ( | ((vlc_object_t *)(const vlc_object_t *obj)) | ) |
References name, name_lock, vlc_object_internals::psz_name, strdup(), vlc_internals, vlc_mutex_lock(), and vlc_mutex_unlock().
| void* vlc_object_hold | ( | ((vlc_object_t *)(vlc_object_t *p_this)) | ) |
Increment an object reference counter.
References vlc_object_internals::refs, and vlc_internals.
| void vlc_object_kill | ( | ((vlc_object_t *)(vlc_object_t *p_this)) | ) |
Requests termination of an object, cancels the object thread, and make the object wait pipe (if it exists) readable.
Not a cancellation point.
References vlc_object_internals::alive, msg_Dbg, pipe_lock, vlc_object_internals::pipes, vlc_internals, vlc_mutex_lock(), vlc_mutex_unlock(), vlc_restorecancel(), and vlc_savecancel().
| void vlc_object_release | ( | ((vlc_object_t *)(vlc_object_t *p_this)) | ) |
Drops a reference to an object (decrements the reference count).
If the count reaches zero, the object is destroyed.
References vlc_object_internals::first, libvlc_lock(), libvlc_unlock(), likely, vlc_object_internals::next, vlc_object_t::p_libvlc, vlc_object_t::p_parent, vlc_object_internals::prev, vlc_object_internals::refs, vlc_internals, vlc_object_destroy(), vlc_object_release, vlc_restorecancel(), and vlc_savecancel().
| void vlc_object_set_destructor | ( | ((vlc_object_t *)(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())
References vlc_object_internals::pf_destructor, and vlc_internals.
| int vlc_object_set_name | ( | ((vlc_object_t *)(vlc_object_t *obj)) | , |
| const char * | name | ||
| ) |
< No error
< Not enough memory
References name_lock, vlc_object_internals::psz_name, strdup(), VLC_ENOMEM, vlc_internals, vlc_mutex_lock(), vlc_mutex_unlock(), and VLC_SUCCESS.
| 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" |
References vlc_object_internals::alive, msg_Dbg, vlc_object_internals::pipes, vlc_internals, vlc_mutex_lock(), vlc_pipe(), vlc_restorecancel(), and vlc_savecancel().
Referenced by httpd_HostCreate(), net_Accept(), net_Connect(), net_Read(), and net_Write().
|
static |
Referenced by PrintObject(), vlc_object_find_name(), vlc_object_get_name(), and vlc_object_set_name().
|
static |
Referenced by vlc_object_kill().
1.8.1.2