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 762ebac..cf60072 100644 --- a/server/char-device.c +++ b/server/char-device.c @@ -823,7 +823,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))) { @@ -845,7 +844,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 ae5f229..65674f4 100644 --- a/server/reds.c +++ b/server/reds.c @@ -441,6 +441,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; @@ -473,7 +474,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) { -- 2.9.4 _______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/spice-devel