Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b03b527a authored by Daichi Hirono's avatar Daichi Hirono Committed by android-build-merger
Browse files

Stop sending object handle with sendObject request.

am: 5c66471a

Change-Id: I1581a4d9683fffe53549ab9b368a4bbf1ae60d40
parents 9b1e2217 5c66471a
Loading
Loading
Loading
Loading
+11 −2
Original line number Diff line number Diff line
@@ -220,7 +220,9 @@ MtpDevice::MtpDevice(struct usb_device* device, int interface,
        mTransactionID(0),
        mReceivedResponse(false),
        mProcessingEvent(false),
        mCurrentEventHandle(0)
        mCurrentEventHandle(0),
        mLastSendObjectInfoTransactionID(0),
        mLastSendObjectInfoObjectHandle(0)
{
    mRequestIn1 = usb_request_new(device, ep_in);
    mRequestIn2 = usb_request_new(device, ep_in);
@@ -490,6 +492,8 @@ MtpObjectHandle MtpDevice::sendObjectInfo(MtpObjectInfo* info) {
   if (sendRequest(MTP_OPERATION_SEND_OBJECT_INFO) && sendData()) {
        MtpResponseCode ret = readResponse();
        if (ret == MTP_RESPONSE_OK) {
            mLastSendObjectInfoTransactionID = mRequest.getTransactionID();
            mLastSendObjectInfoObjectHandle = mResponse.getParameter(3);
            info->mStorageID = mResponse.getParameter(1);
            info->mParent = mResponse.getParameter(2);
            info->mHandle = mResponse.getParameter(3);
@@ -502,9 +506,14 @@ MtpObjectHandle MtpDevice::sendObjectInfo(MtpObjectInfo* info) {
bool MtpDevice::sendObject(MtpObjectHandle handle, int size, int srcFD) {
    Mutex::Autolock autoLock(mMutex);

    if (mLastSendObjectInfoTransactionID + 1 != mTransactionID ||
            mLastSendObjectInfoObjectHandle != handle) {
        ALOGE("A sendObject request must follow the sendObjectInfo request.");
        return false;
    }

    int remaining = size;
    mRequest.reset();
    mRequest.setParameter(1, handle);
    bool error = false;
    if (sendRequest(MTP_OPERATION_SEND_OBJECT)) {
        // send data header
+4 −0
Original line number Diff line number Diff line
@@ -62,6 +62,10 @@ private:
    bool                    mProcessingEvent;
    int                     mCurrentEventHandle;

    // to check if a sendObject request follows the last sendObjectInfo request.
    MtpTransactionID        mLastSendObjectInfoTransactionID;
    MtpObjectHandle         mLastSendObjectInfoObjectHandle;

    // to ensure only one MTP transaction at a time
    Mutex                   mMutex;
    Mutex                   mEventMutex;