From 33bde8d8c4fc71fb3cdd8356fd0df70ffb44fcd7 Mon Sep 17 00:00:00 2001 From: Mike Lockwood Date: Sat, 12 Mar 2011 14:03:23 -0500 Subject: MTP host: Fix problems reading large data packets Fixes problem reading large thumbnails via PTP Bug: 4065217 Change-Id: I643672512829c93ab0827091f39103dbb1918071 Signed-off-by: Mike Lockwood --- media/mtp/MtpDataPacket.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'media/mtp') diff --git a/media/mtp/MtpDataPacket.cpp b/media/mtp/MtpDataPacket.cpp index 801edb0..0b0c80d 100644 --- a/media/mtp/MtpDataPacket.cpp +++ b/media/mtp/MtpDataPacket.cpp @@ -28,7 +28,7 @@ namespace android { MtpDataPacket::MtpDataPacket() - : MtpPacket(512), + : MtpPacket(16384), // MAX_USBFS_BUFFER_SIZE mOffset(MTP_CONTAINER_HEADER_SIZE) { } @@ -399,10 +399,10 @@ int MtpDataPacket::read(struct usb_request *request) { if (length >= MTP_CONTAINER_HEADER_SIZE) { // look at the length field to see if the data spans multiple packets uint32_t totalLength = MtpPacket::getUInt32(MTP_CONTAINER_LENGTH_OFFSET); + allocate(totalLength); while (totalLength > length) { - allocate(length + mAllocationIncrement); request->buffer = mBuffer + length; - request->buffer_length = mAllocationIncrement; + request->buffer_length = totalLength - length; int ret = transfer(request); if (ret >= 0) length += ret; -- cgit v1.1