[vlc-commits] commit: Simplification ( Rémi Denis-Courmont )
git at videolan.org
git at videolan.org
Tue May 25 22:52:27 CEST 2010
vlc | branch: master | Rémi Denis-Courmont <remi at remlab.net> | Tue May 25 23:51:14 2010 +0300| [8f5541c5fcb0c017a8cd3d70694ee365dbabe1ed] | committer: Rémi Denis-Courmont
Simplification
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=8f5541c5fcb0c017a8cd3d70694ee365dbabe1ed
---
src/misc/objects.c | 37 +++++++++++--------------------------
1 files changed, 11 insertions(+), 26 deletions(-)
diff --git a/src/misc/objects.c b/src/misc/objects.c
index 9b8cb98..47723f2 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
More information about the vlc-commits
mailing list