static void PrintObject ( vlc_object_t *, const char * );
static void DumpStructure ( vlc_object_t *, int, char * );
static int FindIndex ( vlc_object_t *, vlc_object_t **, int );
-static void SetAttachment ( vlc_object_t *, vlc_bool_t );
+static void SetAttachment ( vlc_object_t *, bool );
static vlc_list_t * NewList ( int );
static void ListReplace ( vlc_list_t *, vlc_object_t *, int );
if( p_priv == NULL )
return NULL;
- if( i_type == VLC_OBJECT_GLOBAL )
- p_new = p_this;
- else
- {
- assert (i_size >= sizeof (vlc_object_t));
- p_new = (vlc_object_t *)(p_priv + 1);
- }
+ assert (i_size >= sizeof (vlc_object_t));
+ p_new = (vlc_object_t *)(p_priv + 1);
p_new->p_internals = p_priv;
p_new->i_object_type = i_type;
p_new->psz_object_name = NULL;
- p_new->b_die = VLC_FALSE;
- p_new->b_error = VLC_FALSE;
- p_new->b_dead = VLC_FALSE;
- p_priv->b_attached = VLC_FALSE;
- p_new->b_force = VLC_FALSE;
+ p_new->b_die = false;
+ p_new->b_error = false;
+ p_new->b_dead = false;
+ p_priv->b_attached = false;
+ p_new->b_force = false;
p_new->psz_header = NULL;
- p_new->i_flags |= p_this->i_flags
- & (OBJECT_FLAGS_NODBG|OBJECT_FLAGS_QUIET|OBJECT_FLAGS_NOINTERACT);
+ if (p_this)
+ p_new->i_flags = p_this->i_flags
+ & (OBJECT_FLAGS_NODBG|OBJECT_FLAGS_QUIET|OBJECT_FLAGS_NOINTERACT);
p_priv->p_vars = calloc( sizeof( variable_t ), 16 );
return NULL;
}
+ libvlc_global_data_t *p_libvlc_global;
if( i_type == VLC_OBJECT_GLOBAL )
{
/* If i_type is global, then p_new is actually p_libvlc_global */
- libvlc_global_data_t *p_libvlc_global = (libvlc_global_data_t *)p_new;
+ p_libvlc_global = (libvlc_global_data_t *)p_new;
p_new->p_libvlc = NULL;
p_libvlc_global->i_counter = 0;
- p_new->i_object_id = 0;
-
- p_libvlc_global->i_objects = 1;
- p_libvlc_global->pp_objects = malloc( sizeof(vlc_object_t *) );
- p_libvlc_global->pp_objects[0] = p_new;
- p_priv->b_attached = VLC_TRUE;
+ p_libvlc_global->i_objects = 0;
+ p_libvlc_global->pp_objects = NULL;
+ p_priv->b_attached = true;
vlc_mutex_init( p_new, &structure_lock );
}
else
{
- libvlc_global_data_t *p_libvlc_global = vlc_global();
+ p_libvlc_global = vlc_global();
if( i_type == VLC_OBJECT_LIBVLC )
{
p_new->p_libvlc = (libvlc_int_t*)p_new;
- p_priv->b_attached = VLC_TRUE;
+ p_priv->b_attached = true;
}
else
{
p_new->p_libvlc = p_this->p_libvlc;
}
+ }
- vlc_mutex_lock( &structure_lock );
-
- p_libvlc_global->i_counter++;
- p_new->i_object_id = p_libvlc_global->i_counter;
-
- /* Wooohaa! If *this* fails, we're in serious trouble! Anyway it's
- * useless to try and recover anything if pp_objects gets smashed. */
- TAB_APPEND( p_libvlc_global->i_objects, p_libvlc_global->pp_objects,
- p_new );
+ vlc_mutex_lock( &structure_lock );
+ p_new->i_object_id = p_libvlc_global->i_counter++;
- vlc_mutex_unlock( &structure_lock );
- }
+ /* Wooohaa! If *this* fails, we're in serious trouble! Anyway it's
+ * useless to try and recover anything if pp_objects gets smashed. */
+ TAB_APPEND( p_libvlc_global->i_objects, p_libvlc_global->pp_objects,
+ p_new );
+ vlc_mutex_unlock( &structure_lock );
p_priv->i_refcount = 1;
p_priv->pf_destructor = kVLCDestructor;
- p_priv->b_thread = VLC_FALSE;
+ p_priv->b_thread = false;
p_new->p_parent = NULL;
p_new->pp_children = NULL;
p_new->i_children = 0;
p_this->pp_children[i]->psz_object_name );
}
fflush(stderr);
+
/* Dump libvlc object to ease debugging */
vlc_object_dump( p_this->p_libvlc );
+
abort();
}
p_global->pp_objects[i]->i_object_id,
p_global->pp_objects[i]->psz_object_type,
p_global->pp_objects[i]->psz_object_name );
+
+ /* Dump libvlc object to ease debugging */
+ vlc_object_dump( p_global->pp_objects[i] );
+
fflush(stderr);
}
+
+ /* Dump libvlc object to ease debugging */
+ vlc_object_dump( p_this );
+
/* Strongly abort, cause we want these to be fixed */
abort();
}
vlc_mutex_destroy( &structure_lock );
}
+ FREENULL( p_this->psz_object_name );
+
#if defined(WIN32) || defined(UNDER_CE)
/* if object has an associated thread, close it now */
if( p_priv->thread_id.hThread )
int __vlc_object_waitpipe( vlc_object_t *obj )
{
int pfd[2] = { -1, -1 };
- struct vlc_object_internals_t *internals = obj->p_internals;
- vlc_bool_t killed = VLC_FALSE;
+ vlc_object_internals_t *internals = vlc_internals( obj );
+ bool killed = false;
vlc_spin_lock (&internals->spin);
if (internals->pipes[0] == -1)
*
* @return true if the object is dying and should terminate.
*/
-vlc_bool_t __vlc_object_wait( vlc_object_t *obj )
+bool __vlc_object_wait( vlc_object_t *obj )
{
vlc_assert_locked( &obj->object_lock );
vlc_cond_wait( &obj->object_wait, &obj->object_lock );
*
* @return true iff the object has not been killed yet
*/
-vlc_bool_t __vlc_object_alive( vlc_object_t *obj )
+bool __vlc_object_alive( vlc_object_t *obj )
{
vlc_assert_locked( &obj->object_lock );
return !obj->b_die;
*/
void __vlc_object_kill( vlc_object_t *p_this )
{
- struct vlc_object_internals_t *internals = p_this->p_internals;
+ vlc_object_internals_t *internals = vlc_internals( p_this );
int fd;
vlc_mutex_lock( &p_this->object_lock );
- p_this->b_die = VLC_TRUE;
+ p_this->b_die = true;
vlc_spin_lock (&internals->spin);
fd = internals->pipes[1];
{
/* This happens when there are only two remaining objects */
if( pp_objects[i_middle+1]->i_object_id == i_id
- && pp_objects[i_middle+1]->p_internals->i_refcount > 0 )
+ && vlc_internals( pp_objects[i_middle+1] )->i_refcount > 0 )
{
vlc_object_yield_locked( pp_objects[i_middle+1] );
vlc_mutex_unlock( &structure_lock );
break;
}
}
- else if( pp_objects[i_middle]->p_internals->i_refcount > 0 )
+ else if( vlc_internals( pp_objects[i_middle] )->i_refcount > 0 )
{
vlc_object_yield_locked( pp_objects[i_middle] );
vlc_mutex_unlock( &structure_lock );
/* If we are of the requested type ourselves, don't look further */
if( !(i_mode & FIND_STRICT) && p_this->i_object_type == i_type
- && p_this->p_internals->i_refcount > 0 )
+ && vlc_internals( p_this )->i_refcount > 0 )
{
vlc_object_yield_locked( p_this );
vlc_mutex_unlock( &structure_lock );
vlc_mutex_lock( &structure_lock );
/* Avoid obvious freed object uses */
- assert( p_this->p_internals->i_refcount > 0 );
+ assert( vlc_internals( p_this )->i_refcount > 0 );
/* If have the requested name ourselves, don't look further */
if( !(i_mode & FIND_STRICT)
&& p_this->psz_object_name
&& !strcmp( p_this->psz_object_name, psz_name )
- && p_this->p_internals->i_refcount > 0 )
+ && vlc_internals( p_this )->i_refcount > 0 )
{
vlc_object_yield_locked( p_this );
vlc_mutex_unlock( &structure_lock );
vlc_assert_locked (&structure_lock);
/* Avoid obvious freed object uses */
- assert( p_this->p_internals->i_refcount > 0 );
+ assert( vlc_internals( p_this )->i_refcount > 0 );
/* Increment the counter */
- p_this->p_internals->i_refcount++;
+ vlc_internals( p_this )->i_refcount++;
}
/* Public function */
*****************************************************************************/
void __vlc_object_release( vlc_object_t *p_this )
{
- vlc_bool_t b_should_destroy;
+ bool b_should_destroy;
vlc_mutex_lock( &structure_lock );
- assert( p_this->p_internals->i_refcount > 0 );
- p_this->p_internals->i_refcount--;
- b_should_destroy = (p_this->p_internals->i_refcount == 0);
+ assert( vlc_internals( p_this )->i_refcount > 0 );
+ vlc_internals( p_this )->i_refcount--;
+ b_should_destroy = (vlc_internals( p_this )->i_refcount == 0);
if( b_should_destroy )
{
vlc_mutex_lock( &structure_lock );
/* Avoid obvious freed object uses */
- assert( p_this->p_internals->i_refcount > 0 );
+ assert( vlc_internals( p_this )->i_refcount > 0 );
/* Attach the parent to its child */
p_this->p_parent = p_parent;
p_parent->i_children, p_this );
/* Climb up the tree to see whether we are connected with the root */
- if( p_parent->p_internals->b_attached )
+ if( vlc_internals( p_parent )->b_attached )
{
- SetAttachment( p_this, VLC_TRUE );
+ SetAttachment( p_this, true );
}
vlc_mutex_unlock( &structure_lock );
}
/* Climb up the tree to see whether we are connected with the root */
- if( p_this->p_parent->p_internals->b_attached )
+ if( vlc_internals( p_this->p_parent )->b_attached )
{
- SetAttachment( p_this, VLC_FALSE );
+ SetAttachment( p_this, false );
}
DetachObject( p_this );
for( ; pp_current < pp_end ; pp_current++ )
{
- if( (*pp_current)->p_internals->b_attached
+ if( vlc_internals(*pp_current)->b_attached
&& (*pp_current)->i_object_type == i_type )
{
i_count++;
for( ; pp_current < pp_end ; pp_current++ )
{
- if( (*pp_current)->p_internals->b_attached
+ if( vlc_internals(*pp_current)->b_attached
&& (*pp_current)->i_object_type == i_type )
{
ListReplace( p_list, *pp_current, i_index );
for( ; pp_current < pp_end ; pp_current++ )
{
- if( (*pp_current)->p_internals->b_attached )
+ if( vlc_internals(*pp_current)->b_attached )
{
PrintObject( *pp_current, "" );
}
PrintObject( p_object, "" );
- if( !p_object->p_internals->i_vars )
+ if( !vlc_internals( p_object )->i_vars )
printf( " `-o No variables\n" );
- for( i = 0; i < p_object->p_internals->i_vars; i++ )
+ for( i = 0; i < vlc_internals( p_object )->i_vars; i++ )
{
- variable_t *p_var = p_object->p_internals->p_vars + i;
+ variable_t *p_var = vlc_internals( p_object )->p_vars + i;
const char *psz_type = "unknown";
switch( p_var->i_type & VLC_VAR_TYPE )
#undef MYCASE
}
printf( " %c-o \"%s\" (%s",
- i + 1 == p_object->p_internals->i_vars ? '`' : '|',
+ i + 1 == vlc_internals( p_object )->i_vars ? '`' : '|',
p_var->psz_name, psz_type );
if( p_var->psz_text )
printf( ", %s", p_var->psz_text );
printf( ": %f", p_var->val.f_float );
break;
case VLC_VAR_TIME:
- printf( ": " I64Fi, (int64_t)p_var->val.i_time );
+ printf( ": %"PRIi64, (int64_t)p_var->val.i_time );
break;
case VLC_VAR_ADDRESS:
printf( ": %p", p_var->val.p_address );
if( p_tmp )
{
if( p_tmp->i_object_type == i_type
- && p_tmp->p_internals->i_refcount > 0 )
+ && vlc_internals( p_tmp )->i_refcount > 0 )
{
vlc_object_yield_locked( p_tmp );
return p_tmp;
{
p_tmp = p_this->pp_children[i];
if( p_tmp->i_object_type == i_type
- && p_tmp->p_internals->i_refcount > 0 )
+ && vlc_internals( p_tmp )->i_refcount > 0 )
{
vlc_object_yield_locked( p_tmp );
return p_tmp;
{
if( p_tmp->psz_object_name
&& !strcmp( p_tmp->psz_object_name, psz_name )
- && p_tmp->p_internals->i_refcount > 0 )
+ && vlc_internals( p_tmp )->i_refcount > 0 )
{
vlc_object_yield_locked( p_tmp );
return p_tmp;
p_tmp = p_this->pp_children[i];
if( p_tmp->psz_object_name
&& !strcmp( p_tmp->psz_object_name, psz_name )
- && p_tmp->p_internals->i_refcount > 0 )
+ && vlc_internals( p_tmp )->i_refcount > 0 )
{
vlc_object_yield_locked( p_tmp );
return p_tmp;
* This function is used by the attach and detach functions to propagate
* the b_attached flag in a subtree.
*****************************************************************************/
-static void SetAttachment( vlc_object_t *p_this, vlc_bool_t b_attached )
+static void SetAttachment( vlc_object_t *p_this, bool b_attached )
{
int i_index;
SetAttachment( p_this->pp_children[i_index], b_attached );
}
- p_this->p_internals->b_attached = b_attached;
+ vlc_internals( p_this )->b_attached = b_attached;
}
static void PrintObject( vlc_object_t *p_this, const char *psz_prefix )
char psz_children[20], psz_refcount[20], psz_thread[30], psz_name[50],
psz_parent[20];
- psz_name[0] = '\0';
+ memset( &psz_name, 0, sizeof(psz_name) );
if( p_this->psz_object_name )
{
snprintf( psz_name, 49, " \"%s\"", p_this->psz_object_name );
}
psz_refcount[0] = '\0';
- if( p_this->p_internals->i_refcount > 0 )
+ if( vlc_internals( p_this )->i_refcount > 0 )
snprintf( psz_refcount, 19, ", refcount %u",
- p_this->p_internals->i_refcount );
+ vlc_internals( p_this )->i_refcount );
psz_thread[0] = '\0';
- if( p_this->p_internals->b_thread )
+ if( vlc_internals( p_this )->b_thread )
snprintf( psz_thread, 29, " (thread %u)",
#if defined(WIN32) || defined(UNDER_CE)
- (unsigned)p_this->p_internals->thread_id.id );
+ (unsigned)vlc_internals( p_this )->thread_id.id );
#else
- (unsigned)p_this->p_internals->thread_id );
+ (unsigned)vlc_internals( p_this )->thread_id );
#endif
psz_parent[0] = '\0';