MTP: Don't request thumbnails for folder objects in MtpCursor
Change-Id: I75a0a834ab746bed0a35883539c8dbc104789157
Signed-off-by: Mike Lockwood <lockwood@android.com>
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 @@
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 @@
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);
+ 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);
- int offset = window->alloc(size);
- if (!offset) {
- window->freeLastRow();
- LOGE("Failed allocating %u bytes for thumbnail", size);
- return false;
+ 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