This allows less hard reset to the device so can be used to reset the device into a clean but working state. Signed-off-by: Frediano Ziglio <fziglio@xxxxxxxxxx> --- server/char-device.c | 2 -- server/reds.c | 6 +++++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/server/char-device.c b/server/char-device.c index 87a4b19..8aa232b 100644 --- a/server/char-device.c +++ b/server/char-device.c @@ -810,7 +810,6 @@ void red_char_device_reset(RedCharDevice *dev) GList *client_item; RedCharDeviceWriteBuffer *buf; - red_char_device_stop(dev); dev->priv->wait_for_migrate_data = FALSE; spice_debug("char device %p", dev); while ((buf = g_queue_pop_tail(&dev->priv->write_queue))) { @@ -832,7 +831,6 @@ void red_char_device_reset(RedCharDevice *dev) dev_client->num_client_tokens += dev_client->num_client_tokens_free; dev_client->num_client_tokens_free = 0; } - red_char_device_reset_dev_instance(dev, NULL); } void red_char_device_wakeup(RedCharDevice *dev) diff --git a/server/reds.c b/server/reds.c index b144d1e..8db70ee 100644 --- a/server/reds.c +++ b/server/reds.c @@ -431,6 +431,7 @@ static void reds_reset_vdp(RedsState *reds) { RedCharDeviceVDIPort *dev = reds->agent_dev; SpiceCharDeviceInterface *sif; + RedCharDevice *char_dev; dev->priv->read_state = VDI_PORT_READ_STATE_READ_HEADER; dev->priv->receive_pos = (uint8_t *)&dev->priv->vdi_chunk_header; @@ -463,7 +464,10 @@ static void reds_reset_vdp(RedsState *reds) * The tokens are also reset to avoid mismatch in upon agent reconnection. */ dev->priv->agent_attached = FALSE; - red_char_device_reset(RED_CHAR_DEVICE(dev)); + char_dev = RED_CHAR_DEVICE(dev); + red_char_device_stop(char_dev); + red_char_device_reset(char_dev); + red_char_device_reset_dev_instance(char_dev, NULL); sif = spice_char_device_get_interface(reds->vdagent); if (sif->state) { -- git-series 0.9.1 _______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/spice-devel