diff options
author | Paolo Bonzini <pbonzini@redhat.com> | 2012-11-23 09:47:13 +0100 |
---|---|---|
committer | Anthony Liguori <aliguori@us.ibm.com> | 2012-11-26 13:41:00 -0600 |
commit | 667d22d1ae59da46b4c1fbd094ca61145f19b8c3 (patch) | |
tree | db6acb0b6dce798eb5588ef8d05a9873e8114ddc /qom | |
parent | 764b63125a77dab54ed405d493452a4e05679c2e (diff) | |
download | qemu-667d22d1ae59da46b4c1fbd094ca61145f19b8c3.tar.gz qemu-667d22d1ae59da46b4c1fbd094ca61145f19b8c3.tar.bz2 qemu-667d22d1ae59da46b4c1fbd094ca61145f19b8c3.zip |
qdev: move bus removal to object_unparent
Add an ObjectClass method that is done at object_unparent time. It
should remove any backlinks to the object in the composition tree,
so that object_delete will be able to drop the last reference and
free the object.
Use it for qdev buses.
Reviewed-by: Andreas Färber <afaerber@suse.de>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Diffstat (limited to 'qom')
-rw-r--r-- | qom/object.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/qom/object.c b/qom/object.c index 662ff7e093..07495066d5 100644 --- a/qom/object.c +++ b/qom/object.c @@ -363,6 +363,9 @@ void object_unparent(Object *obj) if (obj->parent) { object_property_del_child(obj->parent, obj, NULL); } + if (obj->class->unparent) { + (obj->class->unparent)(obj); + } } static void object_deinit(Object *obj, TypeImpl *type) |