Objects


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_tvlc_object_t::p_libvlc
 (root of all evil) - 1
vlc_object_tvlc_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 Documentation

#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 (  )     __vlc_list_children( VLC_OBJECT(a) )

#define vlc_list_find ( a,
b,
 )     __vlc_list_find( VLC_OBJECT(a),b,c)

#define vlc_object_alive (  )     __vlc_object_alive( VLC_OBJECT(a) )

#define VLC_OBJECT_ANNOUNCE   (-17)

#define VLC_OBJECT_AOUT   (-10)

#define vlc_object_attach ( a,
 )     __vlc_object_attach( VLC_OBJECT(a), VLC_OBJECT(b) )

#define vlc_object_create ( a,
 )     __vlc_object_create( VLC_OBJECT(a), b )

#define VLC_OBJECT_DECODER   (-8)

#define vlc_object_detach (  )     __vlc_object_detach( VLC_OBJECT(a) )

#define vlc_object_dump (  )     __vlc_object_dump( VLC_OBJECT(a))

#define VLC_OBJECT_ENCODER   (-14)

#define vlc_object_find ( a,
b,
 )     __vlc_object_find( VLC_OBJECT(a),b,c)

#define vlc_object_find_name ( a,
b,
 )     __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 (  )     __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 (  )     __vlc_object_release( VLC_OBJECT(a) )

#define vlc_object_set_destructor ( a,
 )     __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,
 )     __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 (  )     __vlc_object_waitpipe( VLC_OBJECT(a) )

#define vlc_object_yield (  )     __vlc_object_yield( VLC_OBJECT(a) )


Typedef Documentation

typedef void(*) vlc_destructor_t(struct vlc_object_t *)


Function Documentation

vlc_list_t* __vlc_list_children ( vlc_object_t obj  ) 

Gets the list of children of an objects, and increment their reference count.

Returns:
a list (possibly empty) or NULL in case of error.

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.

Parameters:
i_type known object type (all of them are negative integer values), or object byte size (always positive).
Returns:
the new object, or NULL on error.

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.

Returns:
0 if the object was signaled before the timer expiration, or ETIMEDOUT if the timer expired without any signal.

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.

Returns:
true if the object is dying and should terminate.

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.

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.


Variable Documentation

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.

module_Need())

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]


Generated on Wed Aug 13 08:05:54 2008 for VLC by  doxygen 1.5.1