diff options
author | Mike Lockwood <lockwood@android.com> | 2010-07-26 20:35:21 -0400 |
---|---|---|
committer | Mike Lockwood <lockwood@android.com> | 2010-07-26 20:36:32 -0400 |
commit | 2b6c4a26499693ae3638e3df6d4255b13e34ee29 (patch) | |
tree | b77206b8eb780f9fb058de492e9b06d68c60546e /media/mtp | |
parent | 80a82ea7eb05c0b807a3b0a76e1b7137ea059189 (diff) | |
download | frameworks_av-2b6c4a26499693ae3638e3df6d4255b13e34ee29.zip frameworks_av-2b6c4a26499693ae3638e3df6d4255b13e34ee29.tar.gz frameworks_av-2b6c4a26499693ae3638e3df6d4255b13e34ee29.tar.bz2 |
MTP: Don't request thumbnails for folder objects in MtpCursor
Change-Id: I75a0a834ab746bed0a35883539c8dbc104789157
Signed-off-by: Mike Lockwood <lockwood@android.com>
Diffstat (limited to 'media/mtp')
-rw-r--r-- | media/mtp/MtpCursor.cpp | 30 | ||||
-rw-r--r-- | media/mtp/MtpCursor.h | 2 |
2 files changed, 19 insertions, 13 deletions
diff --git a/media/mtp/MtpCursor.cpp b/media/mtp/MtpCursor.cpp index 5b6672a..91201c3 100644 --- a/media/mtp/MtpCursor.cpp +++ b/media/mtp/MtpCursor.cpp @@ -367,7 +367,7 @@ bool MtpCursor::fillObject(CursorWindow* window, MtpDevice* device, goto fail; break; case OBJECT_THUMB: - if (!putThumbnail(window, objectID, row, i)) + if (!putThumbnail(window, objectID, objectInfo->mFormat, row, i)) goto fail; break; default: @@ -427,19 +427,25 @@ bool MtpCursor::putString(CursorWindow* window, const char* text, int row, int c return true; } -bool MtpCursor::putThumbnail(CursorWindow* window, int objectID, int row, int column) { +bool MtpCursor::putThumbnail(CursorWindow* window, int objectID, int format, int row, int column) { MtpDevice* device = mClient->getDevice(mDeviceID); - int size; - void* thumbnail = device->getThumbnail(objectID, size); - - LOGD("putThumbnail: %p, size: %d\n", thumbnail, size); - int offset = window->alloc(size); - if (!offset) { - window->freeLastRow(); - LOGE("Failed allocating %u bytes for thumbnail", size); - return false; + void* thumbnail; + int size, offset; + if (format == MTP_FORMAT_ASSOCIATION) { + thumbnail = NULL; + size = offset = 0; + } else { + thumbnail = device->getThumbnail(objectID, size); + + LOGD("putThumbnail: %p, size: %d\n", thumbnail, size); + offset = window->alloc(size); + if (!offset) { + window->freeLastRow(); + LOGE("Failed allocating %u bytes for thumbnail", size); + return false; + } } - if (size > 0) + if (thumbnail) window->copyIn(offset, (const uint8_t*)thumbnail, size); // This must be updated after the call to alloc(), since that diff --git a/media/mtp/MtpCursor.h b/media/mtp/MtpCursor.h index d51c052..3f84753 100644 --- a/media/mtp/MtpCursor.h +++ b/media/mtp/MtpCursor.h @@ -68,7 +68,7 @@ private: bool prepareRow(CursorWindow* window); bool putLong(CursorWindow* window, int value, int row, int column); bool putString(CursorWindow* window, const char* text, int row, int column); - bool putThumbnail(CursorWindow* window, int objectID, int row, int column); + bool putThumbnail(CursorWindow* window, int objectID, int format, int row, int column); }; }; // namespace android |