Hi, On 29-06-16 17:42, Christophe Fergeau wrote:
This variable is accessed from 2 different threads (main thread and USB event thread), so some care must be taken to read/write it.
The event-thread only reads it, so I believe there is no need for this. Regards, Hans
--- src/usb-device-manager.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/usb-device-manager.c b/src/usb-device-manager.c index 1fc8fc1..1912b62 100644 --- a/src/usb-device-manager.c +++ b/src/usb-device-manager.c @@ -1280,7 +1280,7 @@ static gpointer spice_usb_device_manager_usb_ev_thread(gpointer user_data) SpiceUsbDeviceManagerPrivate *priv = self->priv; int rc; - while (priv->event_thread_run) { + while (g_atomic_int_get(&priv->event_thread_run)) { rc = libusb_handle_events(priv->context); if (rc && rc != LIBUSB_ERROR_INTERRUPTED) { const char *desc = spice_usbutil_libusb_strerror(rc); @@ -1310,7 +1310,7 @@ gboolean spice_usb_device_manager_start_event_listening( g_thread_join(priv->event_thread); priv->event_thread = NULL; } - priv->event_thread_run = TRUE; + g_atomic_int_set(&priv->event_thread_run, TRUE); priv->event_thread = g_thread_new("usb_ev_thread", spice_usb_device_manager_usb_ev_thread, self); @@ -1326,7 +1326,7 @@ void spice_usb_device_manager_stop_event_listening( priv->event_listeners--; if (priv->event_listeners == 0) - priv->event_thread_run = FALSE; + g_atomic_int_set(&priv->event_thread_run, FALSE); } static void spice_usb_device_manager_check_redir_on_connect(
_______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/spice-devel