From 805189ab14380a963db445aa083d5049c523486c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Date: Thu, 21 Feb 2019 12:06:53 +0100 Subject: [PATCH] char/spice: trigger HUP event MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 Tested-by: Victor Toso Message-id: 20190221110703.5775-2-marcandre.lureau@redhat.com Signed-off-by: Gerd Hoffmann --- chardev/spice.c | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) 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 = {