diff options
Diffstat (limited to 'qemu-char.c')
-rw-r--r-- | qemu-char.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/qemu-char.c b/qemu-char.c index c9890ad20f..947541a559 100644 --- a/qemu-char.c +++ b/qemu-char.c @@ -221,9 +221,14 @@ void qemu_chr_add_handlers(CharDriverState *s, IOEventHandler *fd_event, void *opaque) { + int fe_open; + if (!opaque && !fd_can_read && !fd_read && !fd_event) { /* chr driver being released. */ ++s->avail_connections; + fe_open = 0; + } else { + fe_open = 1; } s->chr_can_read = fd_can_read; s->chr_read = fd_read; @@ -232,6 +237,14 @@ void qemu_chr_add_handlers(CharDriverState *s, if (s->chr_update_read_handler) s->chr_update_read_handler(s); + if (!s->explicit_fe_open) { + if (fe_open) { + qemu_chr_fe_open(s); + } else { + qemu_chr_fe_close(s); + } + } + /* We're connecting to an already opened device, so let's make sure we also get the open event */ if (s->be_open) { |