Merge changes I6c6bf61b,I3fb0b3a8
am: 3160a25010
Change-Id: Ida24fdd74569b2c57bdb0d3cdcfa486faf3cf3f2
This commit is contained in:
commit
9d7880fe96
2 changed files with 12 additions and 5 deletions
|
|
@ -74,13 +74,18 @@ class BlockingQueue {
|
||||||
|
|
||||||
template <typename Fn>
|
template <typename Fn>
|
||||||
void PopAll(Fn fn) {
|
void PopAll(Fn fn) {
|
||||||
std::unique_lock<std::mutex> lock(mutex);
|
std::vector<T> popped;
|
||||||
cv.wait(lock, [this]() { return !queue.empty(); });
|
|
||||||
|
|
||||||
for (const T& t : queue) {
|
{
|
||||||
|
std::unique_lock<std::mutex> lock(mutex);
|
||||||
|
cv.wait(lock, [this]() { return !queue.empty(); });
|
||||||
|
popped = std::move(queue);
|
||||||
|
queue.clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
for (const T& t : popped) {
|
||||||
fn(t);
|
fn(t);
|
||||||
}
|
}
|
||||||
queue.clear();
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -422,8 +422,10 @@ static void device_disconnected(libusb_device* device) {
|
||||||
if (!it->second->device_handle) {
|
if (!it->second->device_handle) {
|
||||||
// If the handle is null, we were never able to open the device.
|
// If the handle is null, we were never able to open the device.
|
||||||
unregister_usb_transport(it->second.get());
|
unregister_usb_transport(it->second.get());
|
||||||
|
usb_handles.erase(it);
|
||||||
|
} else {
|
||||||
|
// Closure of the transport will erase the usb_handle.
|
||||||
}
|
}
|
||||||
usb_handles.erase(it);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue