OK! in my situation, my webcam can redirect to VM, then, I open amcap and check the code. I find that there are two ways running into the same for loop, and I'm not sure it is normal or not? first route the client receive message through usbredir channel, then 1. usbredir_handle_msg 2. usbredirparser_do_read 3. case usb_redir_stop_interrupt_receiving: parser->callb.stop_interrupt_receiving_func(...) 4. usbredirhost_stop_interrupt_receiving 5. usbredir_write_flush_callback 6. usbredirparser_do_write 7. in loop, for(;;){} second route another thread run while loop rc = libusb_handle_events(priv->context); 1. spice_usb_device_manager_usb_ev_thread 2. libusb_handle_events 3. libusb_handle_events_timeout_completed 4. handle_events 5. windows_handle_events 6. windows_handle_callback case LIBUSB_TRANSFER_TYPE_ISOCHRONOUS: windows_transfer_callback(itransfer, io_result, io_size); 7. windows_transfer_callback 8. usbi_handle_transfer_completion 9. usbredirhost_interrupt_packet_complete 10. usbredir_write_flush_callback 11. usbredirparser_do_write 12. in loop, for(;;){} _______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/spice-devel