Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(273)

Side by Side Diff: device/usb/usb_device_handle_impl.cc

Issue 2891853003: Rename TaskRunner::RunsTasksOnCurrentThread() in //device, //services (Closed)
Patch Set: fixed build error Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « device/serial/serial_io_handler.cc ('k') | device/wake_lock/wake_lock_service_impl.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "device/usb/usb_device_handle_impl.h" 5 #include "device/usb/usb_device_handle_impl.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <memory> 8 #include <memory>
9 #include <numeric> 9 #include <numeric>
10 #include <utility> 10 #include <utility>
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after
105 NOTREACHED(); 105 NOTREACHED();
106 return UsbTransferStatus::TRANSFER_ERROR; 106 return UsbTransferStatus::TRANSFER_ERROR;
107 } 107 }
108 108
109 static void RunTransferCallback( 109 static void RunTransferCallback(
110 scoped_refptr<base::TaskRunner> callback_task_runner, 110 scoped_refptr<base::TaskRunner> callback_task_runner,
111 const UsbDeviceHandle::TransferCallback& callback, 111 const UsbDeviceHandle::TransferCallback& callback,
112 UsbTransferStatus status, 112 UsbTransferStatus status,
113 scoped_refptr<net::IOBuffer> buffer, 113 scoped_refptr<net::IOBuffer> buffer,
114 size_t result) { 114 size_t result) {
115 if (callback_task_runner->RunsTasksOnCurrentThread()) { 115 if (callback_task_runner->RunsTasksInCurrentSequence()) {
116 callback.Run(status, buffer, result); 116 callback.Run(status, buffer, result);
117 } else { 117 } else {
118 callback_task_runner->PostTask( 118 callback_task_runner->PostTask(
119 FROM_HERE, base::Bind(callback, status, buffer, result)); 119 FROM_HERE, base::Bind(callback, status, buffer, result));
120 } 120 }
121 } 121 }
122 122
123 void ReportIsochronousTransferError( 123 void ReportIsochronousTransferError(
124 scoped_refptr<base::TaskRunner> callback_task_runner, 124 scoped_refptr<base::TaskRunner> callback_task_runner,
125 const UsbDeviceHandle::IsochronousTransferCallback& callback, 125 const UsbDeviceHandle::IsochronousTransferCallback& callback,
126 const std::vector<uint32_t> packet_lengths, 126 const std::vector<uint32_t> packet_lengths,
127 UsbTransferStatus status) { 127 UsbTransferStatus status) {
128 std::vector<UsbDeviceHandle::IsochronousPacket> packets( 128 std::vector<UsbDeviceHandle::IsochronousPacket> packets(
129 packet_lengths.size()); 129 packet_lengths.size());
130 for (size_t i = 0; i < packet_lengths.size(); ++i) { 130 for (size_t i = 0; i < packet_lengths.size(); ++i) {
131 packets[i].length = packet_lengths[i]; 131 packets[i].length = packet_lengths[i];
132 packets[i].transferred_length = 0; 132 packets[i].transferred_length = 0;
133 packets[i].status = status; 133 packets[i].status = status;
134 } 134 }
135 if (callback_task_runner->RunsTasksOnCurrentThread()) { 135 if (callback_task_runner->RunsTasksInCurrentSequence()) {
136 callback.Run(nullptr, packets); 136 callback.Run(nullptr, packets);
137 } else { 137 } else {
138 callback_task_runner->PostTask(FROM_HERE, 138 callback_task_runner->PostTask(FROM_HERE,
139 base::Bind(callback, nullptr, packets)); 139 base::Bind(callback, nullptr, packets));
140 } 140 }
141 } 141 }
142 142
143 } // namespace 143 } // namespace
144 144
145 class UsbDeviceHandleImpl::InterfaceClaimer 145 class UsbDeviceHandleImpl::InterfaceClaimer
(...skipping 653 matching lines...) Expand 10 before | Expand all | Expand 10 after
799 blocking_task_runner_(blocking_task_runner) { 799 blocking_task_runner_(blocking_task_runner) {
800 DCHECK(handle) << "Cannot create device with NULL handle."; 800 DCHECK(handle) << "Cannot create device with NULL handle.";
801 } 801 }
802 802
803 UsbDeviceHandleImpl::~UsbDeviceHandleImpl() { 803 UsbDeviceHandleImpl::~UsbDeviceHandleImpl() {
804 DCHECK(!device_) << "UsbDeviceHandle must be closed before it is destroyed."; 804 DCHECK(!device_) << "UsbDeviceHandle must be closed before it is destroyed.";
805 805
806 // This class is RefCountedThreadSafe and so the destructor may be called on 806 // This class is RefCountedThreadSafe and so the destructor may be called on
807 // any thread. libusb is not safe to reentrancy so be sure not to try to close 807 // any thread. libusb is not safe to reentrancy so be sure not to try to close
808 // the device from inside a transfer completion callback. 808 // the device from inside a transfer completion callback.
809 if (blocking_task_runner_->RunsTasksOnCurrentThread()) { 809 if (blocking_task_runner_->RunsTasksInCurrentSequence()) {
810 libusb_close(handle_); 810 libusb_close(handle_);
811 } else { 811 } else {
812 blocking_task_runner_->PostTask(FROM_HERE, 812 blocking_task_runner_->PostTask(FROM_HERE,
813 base::Bind(&libusb_close, handle_)); 813 base::Bind(&libusb_close, handle_));
814 } 814 }
815 } 815 }
816 816
817 void UsbDeviceHandleImpl::SetConfigurationOnBlockingThread( 817 void UsbDeviceHandleImpl::SetConfigurationOnBlockingThread(
818 int configuration_value, 818 int configuration_value,
819 const ResultCallback& callback) { 819 const ResultCallback& callback) {
(...skipping 313 matching lines...) Expand 10 before | Expand all | Expand 10 after
1133 base::Bind(&Transfer::Submit, base::Unretained(transfer.release()))); 1133 base::Bind(&Transfer::Submit, base::Unretained(transfer.release())));
1134 } 1134 }
1135 1135
1136 void UsbDeviceHandleImpl::TransferComplete(Transfer* transfer, 1136 void UsbDeviceHandleImpl::TransferComplete(Transfer* transfer,
1137 const base::Closure& callback) { 1137 const base::Closure& callback) {
1138 DCHECK(thread_checker_.CalledOnValidThread()); 1138 DCHECK(thread_checker_.CalledOnValidThread());
1139 DCHECK(base::ContainsKey(transfers_, transfer)) 1139 DCHECK(base::ContainsKey(transfers_, transfer))
1140 << "Missing transfer completed"; 1140 << "Missing transfer completed";
1141 transfers_.erase(transfer); 1141 transfers_.erase(transfer);
1142 1142
1143 if (transfer->callback_task_runner()->RunsTasksOnCurrentThread()) { 1143 if (transfer->callback_task_runner()->RunsTasksInCurrentSequence()) {
1144 callback.Run(); 1144 callback.Run();
1145 } else { 1145 } else {
1146 transfer->callback_task_runner()->PostTask(FROM_HERE, callback); 1146 transfer->callback_task_runner()->PostTask(FROM_HERE, callback);
1147 } 1147 }
1148 1148
1149 // libusb_free_transfer races with libusb_submit_transfer and only work- 1149 // libusb_free_transfer races with libusb_submit_transfer and only work-
1150 // around is to make sure to call them on the same thread. 1150 // around is to make sure to call them on the same thread.
1151 blocking_task_runner_->DeleteSoon(FROM_HERE, transfer); 1151 blocking_task_runner_->DeleteSoon(FROM_HERE, transfer);
1152 } 1152 }
1153 1153
1154 } // namespace device 1154 } // namespace device
OLDNEW
« no previous file with comments | « device/serial/serial_io_handler.cc ('k') | device/wake_lock/wake_lock_service_impl.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698