32 lines
1.4 KiB
Diff
32 lines
1.4 KiB
Diff
|
From e3932bfebbfec7637f3d03d90e8f9b75e3223236 Mon Sep 17 00:00:00 2001
|
||
|
From: Pavel Grunt <pgrunt@redhat.com>
|
||
|
Date: Wed, 11 Mar 2015 16:31:39 +0100
|
||
|
Subject: [spice-gtk] channel-usbredir: Do not stop event listening if
|
||
|
SpiceSession does not exist
|
||
|
|
||
|
Avoids Segfault when closing the connection just after the usb device redirection.
|
||
|
---
|
||
|
gtk/channel-usbredir.c | 9 ++++++---
|
||
|
1 file changed, 6 insertions(+), 3 deletions(-)
|
||
|
|
||
|
diff --git a/gtk/channel-usbredir.c b/gtk/channel-usbredir.c
|
||
|
index b1a91fb..d974434 100644
|
||
|
--- a/gtk/channel-usbredir.c
|
||
|
+++ b/gtk/channel-usbredir.c
|
||
|
@@ -419,9 +419,12 @@ void spice_usbredir_channel_disconnect_device(SpiceUsbredirChannel *channel)
|
||
|
* usbredirhost_set_device NULL will interrupt the
|
||
|
* libusb_handle_events call in the thread.
|
||
|
*/
|
||
|
- spice_usb_device_manager_stop_event_listening(
|
||
|
- spice_usb_device_manager_get(
|
||
|
- spice_channel_get_session(SPICE_CHANNEL(channel)), NULL));
|
||
|
+ {
|
||
|
+ SpiceSession *session = spice_channel_get_session(SPICE_CHANNEL(channel));
|
||
|
+ if (session != NULL)
|
||
|
+ spice_usb_device_manager_stop_event_listening(
|
||
|
+ spice_usb_device_manager_get(session, NULL));
|
||
|
+ }
|
||
|
/* This also closes the libusb handle we passed from open_device */
|
||
|
usbredirhost_set_device(priv->host, NULL);
|
||
|
libusb_unref_device(priv->device);
|