diff options
author | Marc-André Lureau <marcandre.lureau@redhat.com> | 2019-02-21 12:06:53 +0100 |
---|---|---|
committer | Gerd Hoffmann <kraxel@redhat.com> | 2019-02-21 14:09:17 +0100 |
commit | 805189ab14380a963db445aa083d5049c523486c (patch) | |
tree | 9328ce707ba6aa209648d115a54483d3a04ed3b5 /chardev | |
parent | ac38378950328d8ed808aae66733716a71900f2a (diff) |
char/spice: trigger HUP event
Inform the front-end of disconnected state (spice client
disconnected).
This will wakeup the source handler immediately, so it can detect the
disconnection asap.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Tested-by: Victor Toso <victortoso@redhat.com>
Message-id: 20190221110703.5775-2-marcandre.lureau@redhat.com
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Diffstat (limited to 'chardev')
-rw-r--r-- | chardev/spice.c | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/chardev/spice.c b/chardev/spice.c index 173c257949..c2baeb5461 100644 --- a/chardev/spice.c +++ b/chardev/spice.c @@ -148,15 +148,25 @@ static void vmc_unregister_interface(SpiceChardev *scd) static gboolean spice_char_source_prepare(GSource *source, gint *timeout) { SpiceCharSource *src = (SpiceCharSource *)source; + Chardev *chr = CHARDEV(src->scd); *timeout = -1; + if (!chr->be_open) { + return true; + } + return !src->scd->blocked; } static gboolean spice_char_source_check(GSource *source) { SpiceCharSource *src = (SpiceCharSource *)source; + Chardev *chr = CHARDEV(src->scd); + + if (!chr->be_open) { + return true; + } return !src->scd->blocked; } @@ -164,9 +174,12 @@ static gboolean spice_char_source_check(GSource *source) static gboolean spice_char_source_dispatch(GSource *source, GSourceFunc callback, gpointer user_data) { + SpiceCharSource *src = (SpiceCharSource *)source; + Chardev *chr = CHARDEV(src->scd); GIOFunc func = (GIOFunc)callback; + GIOCondition cond = chr->be_open ? G_IO_OUT : G_IO_HUP; - return func(NULL, G_IO_OUT, user_data); + return func(NULL, cond, user_data); } static GSourceFuncs SpiceCharSourceFuncs = { |