objects.c File Reference

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

Include dependency graph for objects.c:


Defines

#define MYCASE(type, nice)

Functions

static int DumpCommand (vlc_object_t *, char const *, vlc_value_t, vlc_value_t, void *)
static vlc_object_tFindParent (vlc_object_t *, int)
static vlc_object_tFindChild (vlc_object_internals_t *, int)
static vlc_object_tFindParentName (vlc_object_t *, const char *)
static vlc_object_tFindChildName (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_tNewList (int)
static void vlc_object_destroy (vlc_object_t *p_this)
 Destroy a vlc object (Internal).
static void vlc_object_detach_unlocked (vlc_object_t *p_this)
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 *p_this, size_t i_size, int i_type, const char *psz_type)
 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.
void * vlc_object_find (vlc_object_t *p_this, int i_type, int i_mode)
static int objnamecmp (const vlc_object_t *obj, const char *name)
vlc_object_tvlc_object_find_name (vlc_object_t *p_this, const char *psz_name, int i_mode)
 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)
void vlc_object_attach (vlc_object_t *p_this, vlc_object_t *p_parent)
 attach object to a parent object
void vlc_object_detach (vlc_object_t *p_this)
 detach object from its parent
vlc_list_tvlc_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

Detailed Description

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 Documentation

#define MYCASE ( type,
nice   ) 

Value:

case VLC_VAR_ ## type:  \
            psz_type = nice;    \
            break;

Referenced by DumpVariable().


Function Documentation

static int DumpCommand ( vlc_object_t p_this,
char const *  psz_cmd,
vlc_value_t  oldval,
vlc_value_t  newval,
void *  p_data 
) [static]

static void DumpStructure ( vlc_object_internals_t priv,
unsigned  i_level,
char *  psz_foo 
) [static]

static void DumpVariable ( const void *  data,
const VISIT  which,
const int  depth 
) [static]

static vlc_object_t * FindChild ( vlc_object_internals_t priv,
int  i_type 
) [static]

static vlc_object_t * FindChildName ( vlc_object_internals_t priv,
const char *  name 
) [static]

static vlc_object_t * FindParent ( vlc_object_t p_this,
int  i_type 
) [static]

static vlc_object_t * FindParentName ( vlc_object_t p_this,
const char *  name 
) [static]

static void libvlc_lock ( libvlc_int_t p_libvlc  )  [static]

static void libvlc_unlock ( libvlc_int_t p_libvlc  )  [static]

static vlc_list_t * NewList ( int  i_count  )  [static]

static int objnamecmp ( const vlc_object_t obj,
const char *  name 
) [static]

References vlc_object_get_name.

Referenced by vlc_object_find_name().

static void PrintObject ( vlc_object_internals_t priv,
const char *  psz_prefix 
) [static]

void* vlc_custom_create ( vlc_object_t p_this,
size_t  i_size,
int  i_type,
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.

Parameters:
p_this an existing VLC object
i_size byte size of the object structure
i_type object type, usually VLC_OBJECT_CUSTOM
psz_type object type name
Returns:
the created object, or NULL.

References vlc_object_t::b_die, vlc_object_t::b_force, vlc_object_internals::b_thread, DumpCommand(), vlc_object_internals::first, vlc_object_t::i_flags, vlc_object_internals::i_object_type, vlc_object_internals::i_refcount, libvlc_priv(), OBJECT_FLAGS_NODBG, OBJECT_FLAGS_NOINTERACT, OBJECT_FLAGS_QUIET, vlc_object_internals::old_parent, vlc_object_t::p_libvlc, vlc_object_t::p_parent, vlc_object_internals::pf_destructor, vlc_object_internals::pipes, vlc_object_t::psz_header, vlc_object_internals::psz_name, vlc_object_t::psz_object_type, vlc_object_internals::ref_spin, var_AddCallback, var_Create, vlc_object_internals::var_lock, vlc_object_internals::var_root, vlc_object_internals::var_wait, vlc_cond_init(), vlc_mutex_init(), VLC_OBJECT, 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]

Destroy a vlc object (Internal).

This function destroys an object that has been previously allocated with vlc_object_create. The object's refcount must be zero and it must not be attached to other objects in any way.

This function must be called with cancellation disabled (currently).

References vlc_object_internals::b_thread, libvlc_priv(), vlc_object_t::p_libvlc, vlc_object_t::p_parent, vlc_object_internals::pf_destructor, vlc_object_internals::pipes, vlc_object_t::psz_header, vlc_object_internals::psz_name, vlc_object_internals::ref_spin, var_DestroyAll(), vlc_object_internals::var_lock, vlc_object_internals::var_wait, vlc_cond_destroy(), vlc_internals, vlc_mutex_destroy(), VLC_OBJECT, vlc_object_kill, and vlc_spin_destroy.

Referenced by vlc_object_release().

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.

References libvlc_lock(), libvlc_unlock(), vlc_object_t::p_libvlc, vlc_object_t::p_parent, vlc_object_detach_unlocked(), and vlc_object_release.

static void vlc_object_detach_unlocked ( vlc_object_t p_this  )  [static]

int vlc_object_set_name ( vlc_object_t obj,
const char *  name 
)

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.

Parameters:
obj object that would be "killed"
Returns:
a readable pipe descriptor, or -1 on error.

References vlc_object_t::b_die, msg_Dbg, vlc_object_internals::pipes, vlc_internals, vlc_mutex_lock(), vlc_restorecancel(), and vlc_savecancel().

Referenced by httpd_TLSHostNew(), net_Accept(), net_Connect(), net_Read(), and net_Write().


Variable Documentation

vlc_mutex_t name_lock = PTHREAD_MUTEX_INITIALIZER [static]

vlc_mutex_t pipe_lock = PTHREAD_MUTEX_INITIALIZER [static]

Referenced by vlc_object_kill().


Generated on Tue May 25 08:05:36 2010 for VLC by  doxygen 1.5.6