diff options
author | Hans de Goede <hdegoede@redhat.com> | 2013-03-26 11:07:58 +0100 |
---|---|---|
committer | Anthony Liguori <aliguori@us.ibm.com> | 2013-03-27 10:26:49 -0500 |
commit | 574b711a92db094a2d4e7ca707f3b34437a64246 (patch) | |
tree | 8591fba70cbfceaf375ee22727e65cf71cd5eb5e | |
parent | 8e25daa87ac98c9070365b42dcfc070e47fca934 (diff) |
qemu-char: Consolidate guest_close/guest_open into a set_fe_open callback
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Message-id: 1364292483-16564-7-git-send-email-hdegoede@redhat.com
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
-rw-r--r-- | include/char/char.h | 3 | ||||
-rw-r--r-- | qemu-char.c | 10 | ||||
-rw-r--r-- | spice-qemu-char.c | 17 |
3 files changed, 11 insertions, 19 deletions
diff --git a/include/char/char.h b/include/char/char.h index a726ddc011..32c9999113 100644 --- a/include/char/char.h +++ b/include/char/char.h @@ -68,8 +68,7 @@ struct CharDriverState { void (*chr_close)(struct CharDriverState *chr); void (*chr_accept_input)(struct CharDriverState *chr); void (*chr_set_echo)(struct CharDriverState *chr, bool echo); - void (*chr_guest_open)(struct CharDriverState *chr); - void (*chr_guest_close)(struct CharDriverState *chr); + void (*chr_set_fe_open)(struct CharDriverState *chr, int fe_open); void *opaque; int idle_tag; char *label; diff --git a/qemu-char.c b/qemu-char.c index 29a24628ed..bab2eb7a9a 100644 --- a/qemu-char.c +++ b/qemu-char.c @@ -514,8 +514,7 @@ static CharDriverState *qemu_chr_open_mux(CharDriverState *drv) chr->chr_update_read_handler = mux_chr_update_read_handler; chr->chr_accept_input = mux_chr_accept_input; /* Frontend guest-open / -close notification is not support with muxes */ - chr->chr_guest_open = NULL; - chr->chr_guest_close = NULL; + chr->chr_set_fe_open = NULL; /* Muxes are always open on creation */ qemu_chr_be_generic_open(chr); @@ -3425,11 +3424,8 @@ void qemu_chr_fe_set_open(struct CharDriverState *chr, int fe_open) return; } chr->fe_open = fe_open; - if (fe_open && chr->chr_guest_open) { - chr->chr_guest_open(chr); - } - if (!fe_open && chr->chr_guest_close) { - chr->chr_guest_close(chr); + if (chr->chr_set_fe_open) { + chr->chr_set_fe_open(chr, fe_open); } } diff --git a/spice-qemu-char.c b/spice-qemu-char.c index c39095b438..d249829624 100644 --- a/spice-qemu-char.c +++ b/spice-qemu-char.c @@ -176,16 +176,14 @@ static void spice_chr_close(struct CharDriverState *chr) g_free(s); } -static void spice_chr_guest_open(struct CharDriverState *chr) +static void spice_chr_set_fe_open(struct CharDriverState *chr, int fe_open) { SpiceCharDriver *s = chr->opaque; - vmc_register_interface(s); -} - -static void spice_chr_guest_close(struct CharDriverState *chr) -{ - SpiceCharDriver *s = chr->opaque; - vmc_unregister_interface(s); + if (fe_open) { + vmc_register_interface(s); + } else { + vmc_unregister_interface(s); + } } static void print_allowed_subtypes(void) @@ -218,8 +216,7 @@ static CharDriverState *chr_open(const char *subtype) chr->opaque = s; chr->chr_write = spice_chr_write; chr->chr_close = spice_chr_close; - chr->chr_guest_open = spice_chr_guest_open; - chr->chr_guest_close = spice_chr_guest_close; + chr->chr_set_fe_open = spice_chr_set_fe_open; QLIST_INSERT_HEAD(&spice_chars, s, next); |