From: RĂ©mi Denis-Courmont Date: Tue, 25 May 2010 20:51:14 +0000 (+0300) Subject: Simplification X-Git-Tag: 1.2.0-pre1~6491 X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=8f5541c5fcb0c017a8cd3d70694ee365dbabe1ed;p=vlc Simplification --- diff --git a/src/misc/objects.c b/src/misc/objects.c index 9b8cb98cbc..47723f2e21 100644 --- a/src/misc/objects.c +++ b/src/misc/objects.c @@ -90,7 +90,6 @@ 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 ); -static void vlc_object_detach_unlocked (vlc_object_t *p_this); /***************************************************************************** * Local structure lock @@ -255,9 +254,6 @@ static void vlc_object_destroy( vlc_object_t *p_this ) { vlc_object_internals_t *p_priv = vlc_internals( p_this ); - /* Objects are always detached beforehand */ - assert( !p_this->p_parent ); - /* Send a kill to the object's thread if applicable */ vlc_object_kill( p_this ); @@ -584,10 +580,18 @@ void vlc_object_release( vlc_object_t *p_this ) if( b_should_destroy ) { + /* Detach from parent to protect against FIND_CHILDREN */ parent = p_this->p_parent; - if (parent) - /* Detach from parent to protect against FIND_CHILDREN */ - vlc_object_detach_unlocked (p_this); + if (likely(parent)) + { + /* Unlink */ + if (internals->prev != NULL) + internals->prev->next = internals->next; + else + vlc_internals(parent)->first = internals->next; + if (internals->next != NULL) + internals->next->prev = internals->prev; + } /* We have no children */ assert (internals->first == NULL); @@ -638,25 +642,6 @@ void vlc_object_attach( vlc_object_t *p_this, vlc_object_t *p_parent ) } -static void vlc_object_detach_unlocked (vlc_object_t *p_this) -{ - assert (p_this->p_parent != NULL); - - vlc_object_internals_t *pap = vlc_internals (p_this->p_parent); - vlc_object_internals_t *priv = vlc_internals (p_this); - - /* Unlink */ - if (priv->prev != NULL) - priv->prev->next = priv->next; - else - pap->first = priv->next; - if (priv->next != NULL) - priv->next->prev = priv->prev; - - /* Remove p_this's parent */ - p_this->p_parent = NULL; -} - #undef vlc_list_children /** * Gets the list of children of an objects, and increment their reference