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

Commit aa95240d authored by Mike Lockwood's avatar Mike Lockwood
Browse files

MTP: Fix problems with modification dates for folders and non-media files



Also removed an unnecessary parameter to MtpDatabase.endSendobject()

BUG: 3352142

Change-Id: I6fd812dcba4814956bc8bc1cbd6bd5c868197790
Signed-off-by: default avatarMike Lockwood <lockwood@android.com>
parent ccb3506e
Loading
Loading
Loading
Loading
+0 −1
Original line number Diff line number Diff line
@@ -42,7 +42,6 @@ public:
    virtual void                    endSendObject(const char* path,
                                            MtpObjectHandle handle,
                                            MtpObjectFormat format,
                                            int64_t size,
                                            bool succeeded) = 0;

    virtual MtpObjectHandleList*    getObjectList(MtpStorageID storageID,
+4 −9
Original line number Diff line number Diff line
@@ -700,6 +700,9 @@ MtpResponseCode MtpServer::doSendObjectInfo() {
        if (ret && ret != -EEXIST)
            return MTP_RESPONSE_GENERAL_ERROR;
        chown((const char *)path, getuid(), mFileGroup);

        // SendObject does not get sent for directories, so call endSendObject here instead
        mDatabase->endSendObject(path, handle, MTP_FORMAT_ASSOCIATION, MTP_RESPONSE_OK);
    } else {
        mSendObjectFilePath = path;
        // save the handle for the SendObject call, which should follow
@@ -718,7 +721,6 @@ MtpResponseCode MtpServer::doSendObject() {
    MtpResponseCode result = MTP_RESPONSE_OK;
    mode_t mask;
    int ret;
    uint64_t actualSize = -1;

    if (mSendObjectHandle == kInvalidObjectHandle) {
        LOGE("Expected SendObjectInfo before SendObject");
@@ -761,18 +763,11 @@ MtpResponseCode MtpServer::doSendObject() {
            result = MTP_RESPONSE_TRANSACTION_CANCELLED;
        else
            result = MTP_RESPONSE_GENERAL_ERROR;
    } else if (mSendObjectFileSize == 0xFFFFFFFF) {
        // actual size is likely > 4 gig so stat the file to compute actual length
        struct stat s;
        if (lstat(mSendObjectFilePath, &s) == 0) {
            actualSize = s.st_size;
            LOGD("actualSize: %lld\n", actualSize);
        }
    }

done:
    mDatabase->endSendObject(mSendObjectFilePath, mSendObjectHandle, mSendObjectFormat,
            actualSize, result == MTP_RESPONSE_OK);
            result == MTP_RESPONSE_OK);
    mSendObjectHandle = kInvalidObjectHandle;
    mSendObjectFormat = 0;
    return result;