char: fold qemu_chr_set_handlers in qemu_chr_fe_set_handlers

qemu_chr_add_handlers*() have been removed in previous change, so the
common qemu_chr_set_handlers() is no longer needed.

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Message-Id: <20161022095318.17775-17-marcandre.lureau@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
Marc-André Lureau 2016-10-22 12:52:56 +03:00 committed by Paolo Bonzini
parent 5345fdb446
commit 386f07d1fc
2 changed files with 35 additions and 46 deletions

View File

@ -460,7 +460,8 @@ CharDriverState *qemu_chr_fe_get_driver(CharBackend *be);
* @opaque: an opaque pointer for the callbacks
* @context: a main loop context or NULL for the default
*
* Set the front end char handlers.
* Set the front end char handlers. The front end takes the focus if
* any of the handler is non-NULL.
*/
void qemu_chr_fe_set_handlers(CharBackend *b,
IOCanReadHandler *fd_can_read,

View File

@ -467,46 +467,6 @@ void qemu_chr_fe_printf(CharBackend *be, const char *fmt, ...)
}
static void remove_fd_in_watch(CharDriverState *chr);
static void
qemu_chr_set_handlers(CharBackend *be,
IOCanReadHandler *fd_can_read,
IOReadHandler *fd_read,
IOEventHandler *fd_event,
void *opaque,
GMainContext *context)
{
CharDriverState *s = be->chr;
int fe_open;
if (!opaque && !fd_can_read && !fd_read && !fd_event) {
fe_open = 0;
remove_fd_in_watch(s);
} else {
fe_open = 1;
}
s->chr_can_read = fd_can_read;
s->chr_read = fd_read;
s->chr_event = fd_event;
s->handler_opaque = opaque;
if (s->chr_update_read_handler) {
s->chr_update_read_handler(s, context, be->tag);
}
if (!s->explicit_fe_open) {
qemu_chr_fe_set_open(be, fe_open);
}
/* We're connecting to an already opened device, so let's make sure we
also get the open event */
if (fe_open) {
qemu_chr_fe_take_focus(be);
if (s->be_open) {
qemu_chr_be_generic_open(s);
}
}
}
static int mux_chr_new_handler_tag(CharDriverState *chr, Error **errp);
static void mux_chr_set_handlers(CharDriverState *chr, GMainContext *context);
static void mux_set_focus(MuxDriver *d, int focus);
@ -931,15 +891,43 @@ void qemu_chr_fe_set_handlers(CharBackend *b,
void *opaque,
GMainContext *context)
{
if (!b->chr) {
CharDriverState *s;
int fe_open;
s = b->chr;
if (!s) {
return;
}
qemu_chr_set_handlers(b, fd_can_read, fd_read,
fd_event, opaque, context);
if (!opaque && !fd_can_read && !fd_read && !fd_event) {
fe_open = 0;
remove_fd_in_watch(s);
} else {
fe_open = 1;
}
s->chr_can_read = fd_can_read;
s->chr_read = fd_read;
s->chr_event = fd_event;
s->handler_opaque = opaque;
if (s->chr_update_read_handler) {
s->chr_update_read_handler(s, context, b->tag);
}
if (b->chr->is_mux) {
mux_chr_set_handlers(b->chr, context);
if (!s->explicit_fe_open) {
qemu_chr_fe_set_open(b, fe_open);
}
if (fe_open) {
qemu_chr_fe_take_focus(b);
/* We're connecting to an already opened device, so let's make sure we
also get the open event */
if (s->be_open) {
qemu_chr_be_generic_open(s);
}
}
if (s->is_mux) {
mux_chr_set_handlers(s, context);
}
}