This file contains the functions to handle the vlc_object_t type. More...

Defines | |
| #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 *parent, size_t length, const char *typename) |
| Creates a VLC object. | |
| void * | vlc_object_create (vlc_object_t *p_this, size_t i_size) |
| Allocates and initializes a vlc object. | |
| void | vlc_object_set_destructor (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 *obj, const char *name) |
| Assign a name to an object for vlc_object_find_name(). | |
| char * | vlc_object_get_name (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 *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 *p_this, const char *psz_name) |
| Finds a named object and increment its reference count. | |
| void * | vlc_object_hold (vlc_object_t *p_this) |
| Increment an object reference counter. | |
| void | vlc_object_release (vlc_object_t *p_this) |
| Drops a reference to an object (decrements the reference count). | |
| vlc_list_t * | vlc_list_children (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 | ||||
| ) |
case VLC_VAR_ ## type: \ psz_type = nice; \ break;
Referenced by DumpVariable().
| static int DumpCommand | ( | vlc_object_t * | p_this, | |
| char const * | psz_cmd, | |||
| vlc_value_t | oldval, | |||
| vlc_value_t | newval, | |||
| void * | p_data | |||
| ) | [static] |
References DumpStructure(), DumpVariable(), libvlc_lock(), libvlc_unlock(), MAX_DUMPSTRUCTURE_DEPTH, PrintObject(), vlc_value_t::psz_string, twalk(), vlc_internals, vlc_mutex_lock(), vlc_mutex_unlock(), VLC_OBJECT, vlc_object_find_name, and vlc_object_release.
Referenced by vlc_custom_create(), and vlc_object_destroy().
| static void DumpStructure | ( | vlc_object_internals_t * | priv, | |
| unsigned | i_level, | |||
| char * | psz_foo | |||
| ) | [static] |
References vlc_object_internals::first, MAX_DUMPSTRUCTURE_DEPTH, msg_Warn, vlc_object_internals::next, PrintObject(), and vlc_externals.
Referenced by DumpCommand().
| static void DumpVariable | ( | const void * | data, | |
| const VISIT | which, | |||
| const int | depth | |||
| ) | [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 vlc_object_t * FindName | ( | vlc_object_internals_t * | priv, | |
| const char * | name | |||
| ) | [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 void libvlc_lock | ( | libvlc_int_t * | p_libvlc | ) | [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 void libvlc_unlock | ( | libvlc_int_t * | p_libvlc | ) | [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 vlc_list_t * NewList | ( | int | i_count | ) | [static] |
References vlc_list_t::i_count, and vlc_list_t::p_values.
Referenced by vlc_list_children().
| static void PrintObject | ( | vlc_object_internals_t * | priv, | |
| const char * | psz_prefix | |||
| ) | [static] |
References vlc_object_internals::i_refcount, name_lock, vlc_object_internals::psz_name, psz_name, 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 * | p_this, | |
| size_t | i_size, | |||
| const char * | psz_type | |||
| ) |
Creates a VLC object.
Note that because the object name pointer must remain valid, potentially even after the destruction of the object (through the message queues), this function CANNOT be exported to plugins as is. In this case, the old vlc_object_create() must be used instead.
| p_this | an existing VLC object | |
| i_size | byte size of the object structure | |
| psz_type | object type name |
References DumpCommand(), vlc_object_internals::first, vlc_object_internals::i_refcount, libvlc_lock(), libvlc_priv(), libvlc_unlock(), likely, vlc_object_internals::next, vlc_object_internals::pf_destructor, vlc_object_internals::pipes, vlc_object_internals::prev, vlc_object_internals::psz_name, vlc_object_internals::ref_spin, 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_spin_init(), VLC_VAR_ISCOMMAND, and VLC_VAR_STRING.
| static void vlc_object_destroy | ( | vlc_object_t * | p_this | ) | [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_internals::pf_destructor, vlc_object_internals::pipes, vlc_object_internals::psz_name, vlc_object_internals::ref_spin, unlikely, var_DelCallback, var_DestroyAll(), vlc_object_internals::var_lock, vlc_object_internals::var_wait, vlc_cond_destroy(), vlc_internals, vlc_mutex_destroy(), VLC_OBJECT, and vlc_spin_destroy.
Referenced by vlc_object_release().
| 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())
References vlc_object_internals::pf_destructor, vlc_object_internals::ref_spin, vlc_internals, vlc_spin_lock, and vlc_spin_unlock.
| int vlc_object_set_name | ( | vlc_object_t * | obj, | |
| const char * | name | |||
| ) |
Assign a name to an object for vlc_object_find_name().
References name_lock, vlc_object_internals::psz_name, strdup(), 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 msg_Dbg, vlc_object_internals::pipes, vlc_internals, vlc_mutex_lock(), vlc_pipe(), vlc_restorecancel(), and vlc_savecancel().
Referenced by httpd_HostCreate(), httpd_HostThread(), net_Accept(), net_Connect(), net_Read(), and net_Write().
vlc_mutex_t name_lock = PTHREAD_MUTEX_INITIALIZER [static] |
Referenced by PrintObject(), vlc_object_find_name(), vlc_object_get_name(), and vlc_object_set_name().
vlc_mutex_t pipe_lock = PTHREAD_MUTEX_INITIALIZER [static] |
Referenced by vlc_object_kill().
1.7.1