| Index: device/usb/usb_device_handle_impl.cc
|
| diff --git a/device/usb/usb_device_handle_impl.cc b/device/usb/usb_device_handle_impl.cc
|
| index c88fb9bc5f5bc6499a33e7e312938610ff067a5f..2d8c69018474261eb4440ec55f6b7cfbd2a6c601 100644
|
| --- a/device/usb/usb_device_handle_impl.cc
|
| +++ b/device/usb/usb_device_handle_impl.cc
|
| @@ -15,9 +15,9 @@
|
| #include "base/synchronization/lock.h"
|
| #include "base/thread_task_runner_handle.h"
|
| #include "device/usb/usb_context.h"
|
| +#include "device/usb/usb_descriptors.h"
|
| #include "device/usb/usb_device_impl.h"
|
| #include "device/usb/usb_error.h"
|
| -#include "device/usb/usb_interface.h"
|
| #include "device/usb/usb_service.h"
|
| #include "third_party/libusb/src/libusb/libusb.h"
|
|
|
| @@ -182,18 +182,16 @@ void UsbDeviceHandleImpl::Transfer::Complete(UsbTransferStatus status,
|
| }
|
| }
|
|
|
| -UsbDeviceHandleImpl::UsbDeviceHandleImpl(
|
| - scoped_refptr<UsbContext> context,
|
| - UsbDeviceImpl* device,
|
| - PlatformUsbDeviceHandle handle,
|
| - scoped_refptr<UsbConfigDescriptor> interfaces)
|
| +UsbDeviceHandleImpl::UsbDeviceHandleImpl(scoped_refptr<UsbContext> context,
|
| + UsbDeviceImpl* device,
|
| + PlatformUsbDeviceHandle handle,
|
| + const UsbConfigDescriptor& config)
|
| : device_(device),
|
| handle_(handle),
|
| - interfaces_(interfaces),
|
| + config_(config),
|
| context_(context),
|
| task_runner_(base::ThreadTaskRunnerHandle::Get()) {
|
| DCHECK(handle) << "Cannot create device with NULL handle.";
|
| - DCHECK(interfaces_.get()) << "Unable to list interfaces";
|
| }
|
|
|
| UsbDeviceHandleImpl::~UsbDeviceHandleImpl() {
|
| @@ -661,16 +659,23 @@ void UsbDeviceHandleImpl::IsochronousTransfer(
|
| void UsbDeviceHandleImpl::RefreshEndpointMap() {
|
| DCHECK(thread_checker_.CalledOnValidThread());
|
| endpoint_map_.clear();
|
| - for (ClaimedInterfaceMap::iterator it = claimed_interfaces_.begin();
|
| - it != claimed_interfaces_.end();
|
| - ++it) {
|
| - scoped_refptr<const UsbInterfaceAltSettingDescriptor> interface_desc =
|
| - interfaces_->GetInterface(it->first)
|
| - ->GetAltSetting(it->second->alternate_setting());
|
| - for (size_t i = 0; i < interface_desc->GetNumEndpoints(); i++) {
|
| - scoped_refptr<const UsbEndpointDescriptor> endpoint =
|
| - interface_desc->GetEndpoint(i);
|
| - endpoint_map_[endpoint->GetAddress()] = it->first;
|
| + for (ClaimedInterfaceMap::iterator claimedIt = claimed_interfaces_.begin();
|
| + claimedIt != claimed_interfaces_.end();
|
| + ++claimedIt) {
|
| + for (UsbInterfaceDescriptor::Iterator ifaceIt = config_.interfaces.begin();
|
| + ifaceIt != config_.interfaces.end();
|
| + ++ifaceIt) {
|
| + if (ifaceIt->interface_number == claimedIt->first &&
|
| + ifaceIt->alternate_setting ==
|
| + claimedIt->second->alternate_setting()) {
|
| + for (UsbEndpointDescriptor::Iterator endpointIt =
|
| + ifaceIt->endpoints.begin();
|
| + endpointIt != ifaceIt->endpoints.end();
|
| + ++endpointIt) {
|
| + endpoint_map_[endpointIt->address] = claimedIt->first;
|
| + }
|
| + break;
|
| + }
|
| }
|
| }
|
| }
|
|
|