summaryrefslogtreecommitdiffstats
path: root/media/mtp
diff options
context:
space:
mode:
authorMike Lockwood <lockwood@android.com>2011-01-18 11:06:19 -0800
committerMike Lockwood <lockwood@android.com>2011-01-18 11:07:11 -0800
commit7a0bd17bceaf3efc3732e30c538fae420d3b742c (patch)
tree5a9753d5a4ec3491d0a63d5f556d92f106be7070 /media/mtp
parent8c05b54f237879c48796eadbe6c8c4b17ce5f743 (diff)
downloadframeworks_base-7a0bd17bceaf3efc3732e30c538fae420d3b742c.zip
frameworks_base-7a0bd17bceaf3efc3732e30c538fae420d3b742c.tar.gz
frameworks_base-7a0bd17bceaf3efc3732e30c538fae420d3b742c.tar.bz2
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: Mike Lockwood <lockwood@android.com>
Diffstat (limited to 'media/mtp')
-rw-r--r--media/mtp/MtpDatabase.h1
-rw-r--r--media/mtp/MtpServer.cpp13
2 files changed, 4 insertions, 10 deletions
diff --git a/media/mtp/MtpDatabase.h b/media/mtp/MtpDatabase.h
index 6dcb931..4d9a1ae 100644
--- a/media/mtp/MtpDatabase.h
+++ b/media/mtp/MtpDatabase.h
@@ -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,
diff --git a/media/mtp/MtpServer.cpp b/media/mtp/MtpServer.cpp
index 236cd0a..b1bd145 100644
--- a/media/mtp/MtpServer.cpp
+++ b/media/mtp/MtpServer.cpp
@@ -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;