From 2b5d39e85946c3f9f0a4452332675b5cd680f794 Mon Sep 17 00:00:00 2001 From: Salvatore Benedetto Date: Thu, 24 Jan 2008 12:53:32 +0000 Subject: [PATCH] * Added force paramater to CancelQueuedIsochronousTransfers along with a TODO * Replaced space with tab git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23715 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/add-ons/kernel/busses/usb/uhci.cpp | 7 +++++-- src/add-ons/kernel/busses/usb/uhci.h | 4 ++-- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/add-ons/kernel/busses/usb/uhci.cpp b/src/add-ons/kernel/busses/usb/uhci.cpp index f535e30d28..2b882f09e6 100644 --- a/src/add-ons/kernel/busses/usb/uhci.cpp +++ b/src/add-ons/kernel/busses/usb/uhci.cpp @@ -606,7 +606,7 @@ status_t UHCI::CancelQueuedTransfers(Pipe *pipe, bool force) { if (pipe->Type() & USB_OBJECT_ISO_PIPE) - return CancelQueuedIsochronousTransfers(pipe); + return CancelQueuedIsochronousTransfers(pipe, force); if (!Lock()) return B_ERROR; @@ -642,7 +642,7 @@ UHCI::CancelQueuedTransfers(Pipe *pipe, bool force) status_t -UHCI::CancelQueuedIsochronousTransfers(Pipe *pipe) +UHCI::CancelQueuedIsochronousTransfers(Pipe *pipe, bool force) { isochronous_transfer_data *current = fFirstIsochronousTransfer; @@ -656,6 +656,9 @@ UHCI::CancelQueuedIsochronousTransfers(Pipe *pipe) // the transfer. The FinishIsochronousThread will do the rest. for (int32 i = 0; i < packetCount; i++) current->descriptors[i]->status &= ~TD_STATUS_ACTIVE; + + // TODO: Use the force paramater in order to avoid calling + // invalid callbacks current->is_active = false; } diff --git a/src/add-ons/kernel/busses/usb/uhci.h b/src/add-ons/kernel/busses/usb/uhci.h index ffc3230b17..521a069b60 100644 --- a/src/add-ons/kernel/busses/usb/uhci.h +++ b/src/add-ons/kernel/busses/usb/uhci.h @@ -91,8 +91,8 @@ public: status_t Start(); virtual status_t SubmitTransfer(Transfer *transfer); -virtual status_t CancelQueuedTransfers(Pipe *pipe, bool force); - status_t CancelQueuedIsochronousTransfers(Pipe *pipe); +virtual status_t CancelQueuedTransfers(Pipe *pipe, bool force); + status_t CancelQueuedIsochronousTransfers(Pipe *pipe, bool force); status_t SubmitRequest(Transfer *transfer); status_t SubmitIsochronous(Transfer *transfer);