diff -Nru cups-1.5.3/debian/changelog cups-1.5.3/debian/changelog --- cups-1.5.3/debian/changelog 2012-07-10 23:42:38.000000000 +0200 +++ cups-1.5.3/debian/changelog 2012-08-06 18:50:13.000000000 +0200 @@ -1,3 +1,11 @@ +cups (1.5.3-0ubuntu3) precise-proposed; urgency=low + + * debian/patches/usb-backend-reset-after-job-only-for-specific-devices.patch: + Let the USB backend only send a clean-up reset after the job if it is + really needed (LP: #1032456). + + -- Till Kamppeter Mon, 6 Aug 2012 18:49:01 +0200 + cups (1.5.3-0ubuntu2) precise-proposed; urgency=low * debian/patches/usb-backend-further-enhancements.patch: Added latest diff -Nru cups-1.5.3/debian/patches/series cups-1.5.3/debian/patches/series --- cups-1.5.3/debian/patches/series 2012-07-10 23:02:02.000000000 +0200 +++ cups-1.5.3/debian/patches/series 2012-08-06 16:34:54.000000000 +0200 @@ -1,10 +1,11 @@ # patches accepted and committed upstream: - -# patches sent upstream usb-backend-busy-loop-fix.patch usb-backend-detach-usblp-earlier-crash-guards.patch usb-backend-initialize-usblp-attached-state.patch usb-backend-further-enhancements.patch + +# patches sent upstream +usb-backend-reset-after-job-only-for-specific-devices.patch pidfile.patch ppd-poll-with-client-conf.patch # no answer yet, po4a might not be appropriate diff -Nru cups-1.5.3/debian/patches/usb-backend-reset-after-job-only-for-specific-devices.patch cups-1.5.3/debian/patches/usb-backend-reset-after-job-only-for-specific-devices.patch --- cups-1.5.3/debian/patches/usb-backend-reset-after-job-only-for-specific-devices.patch 1970-01-01 01:00:00.000000000 +0100 +++ cups-1.5.3/debian/patches/usb-backend-reset-after-job-only-for-specific-devices.patch 2012-08-06 16:33:59.000000000 +0200 @@ -0,0 +1,74 @@ +--- a/backend/usb-libusb.c ++++ b/backend/usb-libusb.c +@@ -70,7 +70,7 @@ + read_endp, /* Read endpoint */ + protocol, /* Protocol: 1 = Uni-di, 2 = Bi-di. */ + usblp_attached, /* "usblp" kernel module attached? */ +- opened_for_job; /* Set to 1 by print_device() */ ++ reset_after_job; /* Set to 1 by print_device() */ + unsigned int quirks; /* Quirks flags */ + struct libusb_device_handle *handle; /* Open handle to device */ + } usb_printer_t; +@@ -122,6 +122,8 @@ + #define USBLP_QUIRK_USB_INIT 0x2 /* needs vendor USB init string */ + #define USBLP_QUIRK_BAD_CLASS 0x4 /* descriptor uses vendor-specific + Class or SubClass */ ++#define USBLP_QUIRK_RESET 0x4000 /* After printing do a reset ++ for clean-up */ + #define USBLP_QUIRK_NO_REATTACH 0x8000 /* After printing we cannot re-attach + the usblp kernel module */ + +@@ -147,9 +149,11 @@ + { 0x04b8, 0x0202, USBLP_QUIRK_BAD_CLASS }, /* Seiko Epson Receipt + Printer M129C */ + { 0x067b, 0x2305, USBLP_QUIRK_BIDIR | +- USBLP_QUIRK_NO_REATTACH }, ++ USBLP_QUIRK_NO_REATTACH | ++ USBLP_QUIRK_RESET }, + /* Prolific Technology, Inc. PL2305 Parallel Port + (USB -> Parallel adapter) */ ++ { 0x04e8, 0x0000, USBLP_QUIRK_RESET }, /* All Samsung devices */ + { 0, 0 } + }; + +@@ -256,7 +260,12 @@ + } + + g.print_fd = print_fd; +- g.printer->opened_for_job = 1; ++ ++ /* ++ * Some devices need a reset after finishing a job, these devices are ++ * marked with the USBLP_QUIRK_RESET quirk. ++ */ ++ g.printer->reset_after_job = (g.printer->quirks & USBLP_QUIRK_RESET ? 1 : 0); + + /* + * If we are printing data from a print driver on stdin, ignore SIGTERM +@@ -772,7 +781,7 @@ + * Reset the device to clean up after the job + */ + +- if (printer->opened_for_job == 1) ++ if (printer->reset_after_job == 1) + { + if ((errcode = libusb_reset_device(printer->handle)) < 0) + fprintf(stderr, +@@ -1288,7 +1297,7 @@ + } + + printer->usblp_attached = 0; +- printer->opened_for_job = 0; ++ printer->reset_after_job = 0; + + if (verbose) + fputs("STATE: +connecting-to-device\n", stderr); +@@ -1586,7 +1595,7 @@ + for (i = 0; quirk_printers[i].vendorId; i++) + { + if (vendor == quirk_printers[i].vendorId && +- product == quirk_printers[i].productId) ++ (product == 0x0000 || product == quirk_printers[i].productId)) + return quirk_printers[i].quirks; + } + return 0;