summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLinus Walleij <triad@df.lth.se>2006-08-22 21:41:37 +0000
committerLinus Walleij <triad@df.lth.se>2006-08-22 21:41:37 +0000
commit80d134a115e3b326d241540ddebf2a06cbdee89a (patch)
tree3bab015b2b78e1f9ce8244a96a6486f37e51e6e6
parenteab650b3948989622e477f7046b483fa3b7b0b2e (diff)
downloadlibmtp-80d134a115e3b326d241540ddebf2a06cbdee89a.tar.gz
Nasty bug fixed.
-rw-r--r--ChangeLog7
-rw-r--r--src/libusb-glue.c5
2 files changed, 10 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index 14ea217..7d9bc20 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,12 @@
2006-08-22 Linus Walleij <triad@df.lth.se>
+ * src/libusb-glue.c: found a real nasty endpoint bug,
+ code from libgphoto2 was assuming max packet size of
+ 512 bytes while it is 64 when a USB 2.0 device is
+ plugged into an UHCI hub.
+
+2006-08-22 Linus Walleij <triad@df.lth.se>
+
* configure.ac: bump to 0.0.13, also released 0.0.12 now.
2006-08-21 Linus Walleij <triad@df.lth.se>
diff --git a/src/libusb-glue.c b/src/libusb-glue.c
index b92bfa9..6c3c475 100644
--- a/src/libusb-glue.c
+++ b/src/libusb-glue.c
@@ -368,6 +368,7 @@ ptp_write_func (unsigned char *bytes, unsigned int size, void *data)
int towrite = 0;
int result = 0;
int curwrite = 0;
+ struct usb_device *dev = usb_device(ptp_usb->handle);
/*
* gp_port_write returns (in case of success) the number of bytes
@@ -384,9 +385,9 @@ ptp_write_func (unsigned char *bytes, unsigned int size, void *data)
if (result < towrite) /* short writes happen */
break;
}
- // Should load wMaxPacketsize from endpoint first. But works fine for all EPs.
- if ((size % 512) == 0)
+ if ((size % dev->descriptor.bMaxPacketSize0) == 0) {
result=USB_BULK_WRITE(ptp_usb->handle,ptp_usb->outep,(char *)"x",0,ptpcam_usb_timeout);
+ }
if (result < 0)
return PTP_ERROR_IO;
return PTP_RC_OK;