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>
This commit is contained in:
parent
ac38378950
commit
805189ab14
@ -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 = {
|
||||
|
Loading…
Reference in New Issue
Block a user