[Spice-devel] [PATCH xf86-video-qxl 1/4 v2] Add and remove the vdagent interface as the vdagent actually connects and disconnects.
Jeremy White
jwhite at codeweavers.com
Mon Oct 19 12:33:55 PDT 2015
This means that we do not attempt to use agent mouse
mode if there is no connected agent.
It fixes a bug which would occur if an agent disconnected
after session startup which would result in having no
useful mouse.
Signed-off-by: Jeremy White <jwhite at codeweavers.com>
---
src/spiceqxl_vdagent.c | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/src/spiceqxl_vdagent.c b/src/spiceqxl_vdagent.c
index 4208233..315ae53 100644
--- a/src/spiceqxl_vdagent.c
+++ b/src/spiceqxl_vdagent.c
@@ -56,11 +56,12 @@ static int vmc_read(SpiceCharDeviceInstance *sin, uint8_t *buf, int len)
if (errno == EAGAIN || errno == EWOULDBLOCK || errno == EINTR) {
return 0;
}
- fprintf(stderr, "ERROR: vdagentd died\n");
+ fprintf(stderr, "ERROR: vdagent died\n");
close(virtio_client_fd);
virtio_client_fd = -1;
vdagent_sin.qxl->core->watch_remove(virtio_client_watch);
virtio_client_watch = NULL;
+ spice_server_remove_interface(&vdagent_sin.base.base);
}
return nbytes;
}
@@ -120,6 +121,9 @@ static void on_accept(int fd, int event, void *opaque)
}
virtio_client_watch = qxl->core->watch_add(virtio_client_fd, SPICE_WATCH_EVENT_READ
/* TODO - SPICE_WATCH_EVENT_WRITE */, on_read_available, qxl);
+
+ spice_server_add_interface(qxl->spice_server, &vdagent_sin.base.base);
+
return;
error:
@@ -167,6 +171,5 @@ void spiceqxl_vdagent_init(qxl_screen_t *qxl)
/* TODO - SPICE_WATCH_EVENT_WRITE */, on_accept, qxl);
vdagent_sin.base.base.sif = &vmc_interface.base;
- spice_server_add_interface(qxl->spice_server, &vdagent_sin.base.base);
spiceqxl_uinput_init(qxl);
}
--
2.1.4
More information about the Spice-devel
mailing list