diff options
author | Linus Walleij <triad@df.lth.se> | 2006-08-22 21:41:37 +0000 |
---|---|---|
committer | Linus Walleij <triad@df.lth.se> | 2006-08-22 21:41:37 +0000 |
commit | 80d134a115e3b326d241540ddebf2a06cbdee89a (patch) | |
tree | 3bab015b2b78e1f9ce8244a96a6486f37e51e6e6 | |
parent | eab650b3948989622e477f7046b483fa3b7b0b2e (diff) | |
download | libmtp-80d134a115e3b326d241540ddebf2a06cbdee89a.tar.gz |
Nasty bug fixed.
-rw-r--r-- | ChangeLog | 7 | ||||
-rw-r--r-- | src/libusb-glue.c | 5 |
2 files changed, 10 insertions, 2 deletions
@@ -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; |