From 07dd8683aa2ec200e25a373c1f390f7fa3097b8d Mon Sep 17 00:00:00 2001 From: =?utf8?q?R=C3=A9mi=20Denis-Courmont?= Date: Tue, 25 May 2010 23:45:43 +0300 Subject: [PATCH] Remove support for reparenting --- src/libvlc.h | 1 - src/misc/objects.c | 29 +---------------------------- 2 files changed, 1 insertion(+), 29 deletions(-) diff --git a/src/libvlc.h b/src/libvlc.h index 4af6d82ea4..a9fd3d17eb 100644 --- a/src/libvlc.h +++ b/src/libvlc.h @@ -161,7 +161,6 @@ struct vlc_object_internals vlc_object_internals_t *next; /* next sibling */ vlc_object_internals_t *prev; /* previous sibling */ vlc_object_internals_t *first; /* first child */ - vlc_object_t *old_parent; }; #define ZOOM_SECTION N_("Zoom") diff --git a/src/misc/objects.c b/src/misc/objects.c index d4a808c61d..9b8cb98cbc 100644 --- a/src/misc/objects.c +++ b/src/misc/objects.c @@ -159,9 +159,6 @@ void *vlc_custom_create( vlc_object_t *p_this, size_t i_size, p_priv->b_thread = false; p_new->p_parent = NULL; p_priv->first = NULL; -#ifndef NDEBUG - p_priv->old_parent = NULL; -#endif /* Initialize mutexes and condvars */ vlc_mutex_init( &p_priv->var_lock ); @@ -623,31 +620,13 @@ void vlc_object_attach( vlc_object_t *p_this, vlc_object_t *p_parent ) vlc_object_internals_t *pap = vlc_internals (p_parent); vlc_object_internals_t *priv = vlc_internals (p_this); - vlc_object_t *p_old_parent; priv->prev = NULL; vlc_object_hold (p_parent); libvlc_lock (p_this->p_libvlc); -#ifndef NDEBUG - /* Reparenting an object carries a risk of invalid access to the parent, - * from another thread. This can happen when inheriting a variable, or - * through any direct access to vlc_object_t.p_parent. Also, reparenting - * brings a functional bug, whereby the reparented object uses incorrect - * old values for inherited variables (as the new parent may have different - * variable values, especially if it is an input). - * Note that the old parent may be already destroyed. - * So its pointer must not be dereferenced. - */ - if (priv->old_parent) - msg_Info (p_this, "Reparenting an object is dangerous (%p -> %p)!", - priv->old_parent, p_parent); -#endif - - p_old_parent = p_this->p_parent; - if (p_old_parent) - vlc_object_detach_unlocked (p_this); /* Attach the parent to its child */ + assert (p_this->p_parent == NULL); p_this->p_parent = p_parent; /* Attach the child to its parent */ @@ -656,9 +635,6 @@ void vlc_object_attach( vlc_object_t *p_this, vlc_object_t *p_parent ) priv->next->prev = priv; pap->first = priv; libvlc_unlock (p_this->p_libvlc); - - if (p_old_parent) - vlc_object_release (p_old_parent); } @@ -678,9 +654,6 @@ static void vlc_object_detach_unlocked (vlc_object_t *p_this) priv->next->prev = priv->prev; /* Remove p_this's parent */ -#ifndef NDEBUG - priv->old_parent = p_this->p_parent; -#endif p_this->p_parent = NULL; } -- 2.39.5