aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorandroid-build-team Robot <android-build-team-robot@google.com>2017-09-21 22:28:28 +0000
committerandroid-build-team Robot <android-build-team-robot@google.com>2017-09-21 22:28:28 +0000
commit487002ac0e263f797aaebbc751c0315304ee1a88 (patch)
tree5451c867ef898d36760d56a1a8f2d48822ceea5a
parent7a09fc3ec827ddda64be9d980160f3498cd36ddc (diff)
parent6c016415c6bd986413088a330595786d7d3d358c (diff)
downloadlibmtp-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-xautogen.sh3
-rw-r--r--src/libmtp.c21
-rw-r--r--src/libmtp.h.in6
-rw-r--r--src/libmtp.sym3
-rw-r--r--src/libopenusb1-glue.c8
-rw-r--r--src/libusb-glue.c8
-rw-r--r--src/libusb1-glue.c8
7 files changed, 53 insertions, 4 deletions
diff --git a/autogen.sh b/autogen.sh
index ae7e6a1..65c4e2c 100755
--- a/autogen.sh
+++ b/autogen.sh
@@ -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 (&params->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) {