DO NOT MERGE : Always set sys.usb.ffs.mtp.ready during configure

Sometimes, due to a race, the configure
will fail even though descriptors are actually
written because MtpServer did not die properly.
MtpServer lifetime is fixed properly in master
with multiplexed io, but to work around the
issue here, we set the property at all times.

Also reduce the timeout to leave room for
UsbDeviceManager.

Bug: 67844294
Test: Plug/replug device on sled with usb debugging off x50
Test: Verify that the race is hit, but projection still starts
Test: Verify that all other usb configurations still work
Change-Id: I39dd4d3db95e087f065d58ba80ca980559920c99
gugelfrei
Jerry Zhang 7 years ago
parent c347c2eaf8
commit 9dc10038b0

@ -614,7 +614,7 @@ int MtpFfsHandle::start() {
int MtpFfsHandle::configure(bool usePtp) {
// Wait till previous server invocation has closed
if (!mLock.try_lock_for(std::chrono::milliseconds(1000))) {
if (!mLock.try_lock_for(std::chrono::milliseconds(300))) {
LOG(ERROR) << "MtpServer was unable to get configure lock";
return -1;
}

@ -132,7 +132,7 @@ int MtpServer::configure(bool usePtp) {
int ret = sHandle->configure(usePtp);
if (ret) ALOGE("Failed to configure MTP driver!");
else android::base::SetProperty("sys.usb.ffs.mtp.ready", "1");
android::base::SetProperty("sys.usb.ffs.mtp.ready", "1");
return ret;
}

Loading…
Cancel
Save