This is an automated email from the git hooks/post-receive script. wrar-guest pushed a commit to branch master in repository xboxdrv.
commit 0b168bfa30b4812c6668b84092a710f7590fb70d Author: Ingo Ruhnke <[email protected]> Date: Sat Oct 24 12:45:21 2015 +0200 Added some handling of LIBUSB_TRANSFER_NO_DEVICE errors to USBController Fixes #35 --- src/usb_controller.cpp | 46 ++++++++++++++++++++++++++++++++-------------- 1 file changed, 32 insertions(+), 14 deletions(-) diff --git a/src/usb_controller.cpp b/src/usb_controller.cpp index 0d2b369..4014347 100644 --- a/src/usb_controller.cpp +++ b/src/usb_controller.cpp @@ -218,10 +218,21 @@ USBController::on_control(libusb_transfer* transfer) void USBController::on_write_data(libusb_transfer* transfer) { - if (transfer->status != LIBUSB_TRANSFER_COMPLETED) + if (transfer->status == LIBUSB_TRANSFER_COMPLETED) { - if (transfer->status != LIBUSB_TRANSFER_CANCELLED) - log_error("USB write failure: " << transfer->length << ": " << usb_transfer_strerror(transfer->status)); + // ok + } + else if (transfer->status == LIBUSB_TRANSFER_CANCELLED) + { + // ok + } + else if (transfer->status == LIBUSB_TRANSFER_NO_DEVICE) + { + send_disconnect(); + } + else + { + log_error("USB write failure: " << transfer->length << ": " << usb_transfer_strerror(transfer->status)); } m_transfers.erase(transfer); @@ -233,15 +244,7 @@ USBController::on_read_data(libusb_transfer* transfer) { assert(transfer); - if (transfer->status != LIBUSB_TRANSFER_COMPLETED) - { - if (transfer->status != LIBUSB_TRANSFER_CANCELLED) - log_error("USB read failure: " << transfer->length << ": " << usb_transfer_strerror(transfer->status)); - - m_transfers.erase(transfer); - libusb_free_transfer(transfer); - } - else + if (transfer->status == LIBUSB_TRANSFER_COMPLETED) { // process data XboxGenericMsg msg; @@ -255,12 +258,27 @@ USBController::on_read_data(libusb_transfer* transfer) if (ret != LIBUSB_SUCCESS) // could also check for LIBUSB_ERROR_NO_DEVICE { log_error("failed to resubmit USB transfer: " << usb_strerror(ret)); - + m_transfers.erase(transfer); libusb_free_transfer(transfer); - send_disconnect(); } } + else if (transfer->status == LIBUSB_TRANSFER_CANCELLED) + { + // ok + } + else if (transfer->status == LIBUSB_TRANSFER_NO_DEVICE) + { + m_transfers.erase(transfer); + libusb_free_transfer(transfer); + send_disconnect(); + } + else + { + log_error("USB read failure: " << transfer->length << ": " << usb_transfer_strerror(transfer->status)); + m_transfers.erase(transfer); + libusb_free_transfer(transfer); + } } void -- Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-games/xboxdrv.git _______________________________________________ Pkg-games-commits mailing list [email protected] http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-games-commits

