Transfer /dev/mtp_usb fd ownership when instancing MtpDevHandle
/dev/mtp_usb was opened before instancing MtpDevHandle, the existing fd should be passed in otherwise MtpDevHandle::start would be blocked as it attempted to open the device twice. Change-Id: I6afc5b6926930dad77aceac2f6a00e1c6759a883
This commit is contained in:
@@ -33,8 +33,9 @@
|
||||
|
||||
constexpr char mtp_dev_path[] = "/dev/mtp_usb";
|
||||
|
||||
MtpDevHandle::MtpDevHandle()
|
||||
: mFd(-1) {};
|
||||
MtpDevHandle::MtpDevHandle(int controlFd) {
|
||||
mFd.reset(controlFd);
|
||||
}
|
||||
|
||||
MtpDevHandle::~MtpDevHandle() {}
|
||||
|
||||
|
||||
@@ -25,7 +25,7 @@ private:
|
||||
android::base::unique_fd mFd;
|
||||
|
||||
public:
|
||||
MtpDevHandle();
|
||||
MtpDevHandle(int controlFd);
|
||||
~MtpDevHandle();
|
||||
int read(void *data, size_t len);
|
||||
int write(const void *data, size_t len);
|
||||
|
||||
@@ -123,7 +123,7 @@ MtpServer::MtpServer(IMtpDatabase* database, int controlFd, bool ptp,
|
||||
mHandle = aio_compat ? new MtpFfsCompatHandle(controlFd) : new MtpFfsHandle(controlFd);
|
||||
mHandle->writeDescriptors(mPtp);
|
||||
} else {
|
||||
mHandle = new MtpDevHandle();
|
||||
mHandle = new MtpDevHandle(controlFd);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user