diff options
author | android-build-team Robot <android-build-team-robot@google.com> | 2017-09-21 22:28:28 +0000 |
---|---|---|
committer | android-build-team Robot <android-build-team-robot@google.com> | 2017-09-21 22:28:28 +0000 |
commit | 487002ac0e263f797aaebbc751c0315304ee1a88 (patch) | |
tree | 5451c867ef898d36760d56a1a8f2d48822ceea5a | |
parent | 7a09fc3ec827ddda64be9d980160f3498cd36ddc (diff) | |
parent | 6c016415c6bd986413088a330595786d7d3d358c (diff) | |
download | libmtp-oreo-mr1-wear-release.tar.gz |
release-request-d1c17d84-f03d-44ed-9e1a-f1dedcc3182d-for-git_oc-mr1-wear-release-4353319 snap-temp-L19800000105061864android-wear-8.1.0_r1oreo-mr1-wear-release
Change-Id: Ib114f87f0dbbed316f5252325a04f8ab15c4bf9a
-rwxr-xr-x | autogen.sh | 3 | ||||
-rw-r--r-- | src/libmtp.c | 21 | ||||
-rw-r--r-- | src/libmtp.h.in | 6 | ||||
-rw-r--r-- | src/libmtp.sym | 3 | ||||
-rw-r--r-- | src/libopenusb1-glue.c | 8 | ||||
-rw-r--r-- | src/libusb-glue.c | 8 | ||||
-rw-r--r-- | src/libusb1-glue.c | 8 |
7 files changed, 53 insertions, 4 deletions
@@ -16,7 +16,8 @@ fail() { echo "Removing libtool cruft" rm -f ltmain.sh config.guess config.sub echo "Running libtoolize" -libtoolize --copy --force || fail +(glibtoolize --version) < /dev/null > /dev/null 2>&1 && LIBTOOLIZE=glibtoolize || LIBTOOLIZE=libtoolize +$LIBTOOLIZE --copy --force || fail # Refresh GNU autotools toolchain: aclocal autoheader echo "Removing aclocal cruft" diff --git a/src/libmtp.c b/src/libmtp.c index 432f6b1..7a0ac13 100644 --- a/src/libmtp.c +++ b/src/libmtp.c @@ -130,6 +130,7 @@ static filemap_t *g_filemap = NULL; // This holds the global property mapping table static propertymap_t *g_propertymap = NULL; +static int load_cache_on_demand = 0; /* * Forward declarations of local (static) functions. */ @@ -2580,6 +2581,18 @@ void LIBMTP_Dump_Errorstack(LIBMTP_mtpdevice_t *device) } } +void LIBMTP_Set_Device_Timeout(LIBMTP_mtpdevice_t *device, int milliseconds) +{ + PTP_USB *ptp_usb = (PTP_USB*) device->usbinfo; + set_usb_device_timeout(ptp_usb, milliseconds); +} + +void LIBMTP_Get_Device_Timeout(LIBMTP_mtpdevice_t *device, int *milliseconds) +{ + PTP_USB *ptp_usb = (PTP_USB*) device->usbinfo; + get_usb_device_timeout(ptp_usb, milliseconds); +} + /** * This command gets all handles and stuff by FAST directory retrieveal * which is available by getting all metadata for object @@ -2794,6 +2807,10 @@ static void flush_handles(LIBMTP_mtpdevice_t *device) return; } + if (load_cache_on_demand) { + return; + } + if (params->objects != NULL) { for (i=0;i<params->nrofobjects;i++) ptp_free_object (¶ms->objects[i]); @@ -4555,6 +4572,10 @@ LIBMTP_file_t * LIBMTP_Get_Files_And_Folders(LIBMTP_mtpdevice_t *device, return retfiles; } +void LIBMTP_Set_Load_Cache_On_Demand(int flag) +{ + load_cache_on_demand = flag; +} /** * This creates a new track metadata structure and allocates memory diff --git a/src/libmtp.h.in b/src/libmtp.h.in index 6a12891..5ba6cc7 100644 --- a/src/libmtp.h.in +++ b/src/libmtp.h.in @@ -58,6 +58,7 @@ typedef unsigned __int64 uint64_t; #include <stdint.h> /* We use time_t */ #include <time.h> +#include <utime.h> /** * @defgroup types libmtp global type definitions @@ -856,6 +857,9 @@ LIBMTP_error_t *LIBMTP_Get_Errorstack(LIBMTP_mtpdevice_t*); void LIBMTP_Clear_Errorstack(LIBMTP_mtpdevice_t*); void LIBMTP_Dump_Errorstack(LIBMTP_mtpdevice_t*); +void LIBMTP_Set_Device_Timeout(LIBMTP_mtpdevice_t *device, int milliseconds); +void LIBMTP_Get_Device_Timeout(LIBMTP_mtpdevice_t *device, int *milliseconds); + #define LIBMTP_STORAGE_SORTBY_NOTSORTED 0 #define LIBMTP_STORAGE_SORTBY_FREESPACE 1 #define LIBMTP_STORAGE_SORTBY_MAXSPACE 2 @@ -952,6 +956,8 @@ int LIBMTP_Get_Representative_Sample(LIBMTP_mtpdevice_t *, uint32_t const, int LIBMTP_Get_Thumbnail(LIBMTP_mtpdevice_t *, uint32_t const, unsigned char **data, unsigned int *size); +void LIBMTP_Set_Load_Cache_On_Demand(int flag); + /** * @} * @defgroup tracks The track management API. diff --git a/src/libmtp.sym b/src/libmtp.sym index a05d6dd..01d54ff 100644 --- a/src/libmtp.sym +++ b/src/libmtp.sym @@ -1,4 +1,7 @@ LIBMTP_Set_Debug +LIBMTP_Set_Device_Timeout +LIBMTP_Get_Device_Timeout +LIBMTP_Set_Load_Cache_On_Demand LIBMTP_Init LIBMTP_Get_Supported_Devices_List LIBMTP_Detect_Raw_Devices diff --git a/src/libopenusb1-glue.c b/src/libopenusb1-glue.c index 4d88f82..a4cfbad 100644 --- a/src/libopenusb1-glue.c +++ b/src/libopenusb1-glue.c @@ -1210,6 +1210,10 @@ ptp_usb_senddata(PTPParams* params, PTPContainer* ptp, PTPUSBBulkContainer usbdata; uint64_t bytes_left_to_transfer; PTPDataHandler memhandler; + unsigned long packet_size; + PTP_USB *ptp_usb = (PTP_USB *) params->data; + + packet_size = ptp_usb->inep_maxpacket; LIBMTP_USB_DEBUG("SEND DATA PHASE\n"); @@ -1252,7 +1256,9 @@ ptp_usb_senddata(PTPParams* params, PTPContainer* ptp, bytes_left_to_transfer = size - datawlen; ret = PTP_RC_OK; while (bytes_left_to_transfer > 0) { - ret = ptp_write_func(bytes_left_to_transfer, handler, params->data, &written); + int max_long_transfer = ULONG_MAX + 1 - packet_size; + ret = ptp_write_func (bytes_left_to_transfer > max_long_transfer ? max_long_transfer : bytes_left_to_transfer, + handler, params->data, &written); if (ret != PTP_RC_OK){ break; } diff --git a/src/libusb-glue.c b/src/libusb-glue.c index 722a591..0079b08 100644 --- a/src/libusb-glue.c +++ b/src/libusb-glue.c @@ -1202,6 +1202,10 @@ ptp_usb_senddata (PTPParams* params, PTPContainer* ptp, PTPUSBBulkContainer usbdata; uint64_t bytes_left_to_transfer; PTPDataHandler memhandler; + unsigned long packet_size; + PTP_USB *ptp_usb = (PTP_USB *) params->data; + + packet_size = ptp_usb->inep_maxpacket; LIBMTP_USB_DEBUG("SEND DATA PHASE\n"); @@ -1242,7 +1246,9 @@ ptp_usb_senddata (PTPParams* params, PTPContainer* ptp, bytes_left_to_transfer = size-datawlen; ret = PTP_RC_OK; while(bytes_left_to_transfer > 0) { - ret = ptp_write_func (bytes_left_to_transfer, handler, params->data, &written); + int max_long_transfer = ULONG_MAX + 1 - packet_size; + ret = ptp_write_func (bytes_left_to_transfer > max_long_transfer ? max_long_transfer : bytes_left_to_transfer, + handler, params->data, &written); if (ret != PTP_RC_OK) break; if (written == 0) { diff --git a/src/libusb1-glue.c b/src/libusb1-glue.c index 8894378..3098553 100644 --- a/src/libusb1-glue.c +++ b/src/libusb1-glue.c @@ -1227,6 +1227,10 @@ ptp_usb_senddata (PTPParams* params, PTPContainer* ptp, PTPUSBBulkContainer usbdata; uint64_t bytes_left_to_transfer; PTPDataHandler memhandler; + unsigned long packet_size; + PTP_USB *ptp_usb = (PTP_USB *) params->data; + + packet_size = ptp_usb->outep_maxpacket; LIBMTP_USB_DEBUG("SEND DATA PHASE\n"); @@ -1267,7 +1271,9 @@ ptp_usb_senddata (PTPParams* params, PTPContainer* ptp, bytes_left_to_transfer = size-datawlen; ret = PTP_RC_OK; while(bytes_left_to_transfer > 0) { - ret = ptp_write_func (bytes_left_to_transfer, handler, params->data, &written); + int max_long_transfer = ULONG_MAX + 1 - packet_size; + ret = ptp_write_func (bytes_left_to_transfer > max_long_transfer ? max_long_transfer : bytes_left_to_transfer, + handler, params->data, &written); if (ret != PTP_RC_OK) break; if (written == 0) { |