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
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 @@
     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