ping On Tue, Aug 7, 2018 at 5:27 PM <marcandre.lureau@xxxxxxxxxx> wrote: > > From: Marc-André Lureau <marcandre.lureau@xxxxxxxxxx> > > Follow all other char devices implementation (spicevmc, agent, > stream-device) and set the char device state when > connected/disconnected. This allows qemu to discard writes, optimize a > bit the source polling, and will trigger HUP events. > > See related qemu "char/spice: discard write() if backend is > disconnected". > > Note: sif->state() should probably be handled at the char-device > level. I am not sure what the smartcard channel really brings over > plain spicevmc... > > Signed-off-by: Marc-André Lureau <marcandre.lureau@xxxxxxxxxx> > --- > server/smartcard.c | 15 +++++++++++++++ > 1 file changed, 15 insertions(+) > > diff --git a/server/smartcard.c b/server/smartcard.c > index 2cb68e06..403805a8 100644 > --- a/server/smartcard.c > +++ b/server/smartcard.c > @@ -343,6 +343,11 @@ void smartcard_char_device_attach_client(SpiceCharDeviceInstance *char_device, > dev->priv->scc = NULL; > smartcard_channel_client_set_char_device(scc, NULL); > red_channel_client_disconnect(RED_CHANNEL_CLIENT(scc)); > + } else { > + SpiceCharDeviceInterface *sif = spice_char_device_get_interface(char_device); > + if (sif->state) { > + sif->state(char_device, 1); > + } > } > } > > @@ -373,11 +378,21 @@ gboolean smartcard_char_device_notify_reader_remove(RedCharDeviceSmartcard *dev) > void smartcard_char_device_detach_client(RedCharDeviceSmartcard *smartcard, > SmartCardChannelClient *scc) > { > + SpiceCharDeviceInterface *sif; > + SpiceCharDeviceInstance *sin; > + > + g_object_get(smartcard, "sin", &sin, NULL); > + sif = spice_char_device_get_interface(sin); > + > spice_assert(smartcard->priv->scc == scc); > red_char_device_client_remove(RED_CHAR_DEVICE(smartcard), > red_channel_client_get_client(RED_CHANNEL_CLIENT(scc))); > smartcard_channel_client_set_char_device(scc, NULL); > smartcard->priv->scc = NULL; > + > + if (sif->state) { > + sif->state(sin, 0); > + } > } > > SmartCardChannelClient* smartcard_char_device_get_client(RedCharDeviceSmartcard *smartcard) > -- > 2.18.0.547.g1d89318c48 > > _______________________________________________ > Spice-devel mailing list > Spice-devel@xxxxxxxxxxxxxxxxxxxxx > https://lists.freedesktop.org/mailman/listinfo/spice-devel -- Marc-André Lureau _______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/spice-devel