diff options
author | msweet <msweet@a1ca3aef-8c08-0410-bb20-df032aa958be> | 2008-12-15 18:13:37 +0000 |
---|---|---|
committer | msweet <msweet@a1ca3aef-8c08-0410-bb20-df032aa958be> | 2008-12-15 18:13:37 +0000 |
commit | 557dde9fbca75e285eb261458d7196a5eae0f4a0 (patch) | |
tree | f364b3d033080a05c2cdb69d7cf96c21ff07d3f4 /backend/usb-libusb.c | |
parent | 426c6a595994436a6780205e27098a8eef94d786 (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.c | 19 |
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; } |