summaryrefslogtreecommitdiff
path: root/backend/usb-libusb.c
diff options
context:
space:
mode:
authormsweet <msweet@a1ca3aef-8c08-0410-bb20-df032aa958be>2008-12-15 18:13:37 +0000
committermsweet <msweet@a1ca3aef-8c08-0410-bb20-df032aa958be>2008-12-15 18:13:37 +0000
commit557dde9fbca75e285eb261458d7196a5eae0f4a0 (patch)
treef364b3d033080a05c2cdb69d7cf96c21ff07d3f4 /backend/usb-libusb.c
parent426c6a595994436a6780205e27098a8eef94d786 (diff)
Merge changes from CUPS 1.4svn-r8196 (CUPS 1.4b2)
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@1100 a1ca3aef-8c08-0410-bb20-df032aa958be
Diffstat (limited to 'backend/usb-libusb.c')
-rw-r--r--backend/usb-libusb.c19
1 files changed, 18 insertions, 1 deletions
diff --git a/backend/usb-libusb.c b/backend/usb-libusb.c
index 2f6bdb83a..6e6494c49 100644
--- a/backend/usb-libusb.c
+++ b/backend/usb-libusb.c
@@ -163,7 +163,7 @@ print_device(const char *uri, /* I - Device URI */
if ((bytes = read(print_fd, buffer, sizeof(buffer))) > 0)
{
while (usb_bulk_write(printer->handle, printer->write_endp, buffer,
- bytes, 5000) < 0)
+ bytes, 45000) < 0)
{
_cupsLangPrintf(stderr,
_("ERROR: Unable to write %d bytes to printer!\n"),
@@ -202,6 +202,23 @@ close_device(usb_printer_t *printer) /* I - Printer */
{
if (printer->handle)
{
+ /*
+ * Release interfaces before closing so that we know all data is written
+ * to the device...
+ */
+
+ int number = printer->device->config[printer->conf].
+ interface[printer->iface].
+ altsetting[printer->altset].bInterfaceNumber;
+ usb_release_interface(printer->handle, number);
+
+ if (number != 0)
+ usb_release_interface(printer->handle, 0);
+
+ /*
+ * Close the interface and return...
+ */
+
usb_close(printer->handle);
printer->handle = NULL;
}