diff options
author | Marc-André Lureau | 2017-01-26 21:49:13 +0100 |
---|---|---|
committer | Marc-André Lureau | 2017-06-02 09:33:53 +0200 |
commit | 1ce2610c106d925387669b3133fc18ea986f0476 (patch) | |
tree | bd08c41941ea2235cabde4c02739f6ca52ff07d7 /chardev/char-fe.c | |
parent | char: rename functions that are not part of fe (diff) | |
download | qemu-1ce2610c106d925387669b3133fc18ea986f0476.tar.gz qemu-1ce2610c106d925387669b3133fc18ea986f0476.tar.xz qemu-1ce2610c106d925387669b3133fc18ea986f0476.zip |
char: make chr_fe_deinit() optionaly delete backend
This simplifies removing a backend for a frontend user (no need to
retrieve the associated driver and separate delete call etc).
NB: many frontends have questionable handling of ending a chardev. They
should probably delete the backend to prevent broken reusage.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Diffstat (limited to 'chardev/char-fe.c')
-rw-r--r-- | chardev/char-fe.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/chardev/char-fe.c b/chardev/char-fe.c index 341221d029..3f90f0567c 100644 --- a/chardev/char-fe.c +++ b/chardev/char-fe.c @@ -211,7 +211,7 @@ unavailable: return false; } -void qemu_chr_fe_deinit(CharBackend *b) +void qemu_chr_fe_deinit(CharBackend *b, bool del) { assert(b); @@ -224,6 +224,9 @@ void qemu_chr_fe_deinit(CharBackend *b) MuxChardev *d = MUX_CHARDEV(b->chr); d->backends[b->tag] = NULL; } + if (del) { + object_unparent(OBJECT(b->chr)); + } b->chr = NULL; } } |