mirror of
https://github.com/storytold/pdfcraft.git
synced 2026-11-10 14:41:51 +00:00
* Print: list printers without asking drivers; ask only about the one picked (#2192) On Windows, craft-print's printers() reads every driver's capabilities to report two-sided support. Windows takes about 48 s to give up on a printer it can't reach, such as a WSD printer on another network, so the Print dialog waited for each one before it listed anything (#2192). The dialog now lists printers from craft-print's printer_queues(), which asks no driver, and asks two_sided() about the printer the user picks, on a background thread (PdfCraftApp::two_sided_source, set by the desktop app like printer_source). Each answer is kept for the session, so a printer is asked about at most once, and one nobody picks is never waited on. The "doesn't take two-sided settings" note shows once the answer arrives. The automation printers tool still uses printers(), so it keeps reporting two_sided. Needs the craft-libs change that adds craft_print::two_sided. * Build: take craft-print from storytold/craft-libs#133 Pins craft-print to the head of storytold/craft-libs#133 (b6a3b87), which adds craft_print::two_sided as one commit on craft-libs main at 5ee809f. craft-print is otherwise unchanged from 7ee35a9, the rev main pins now; the other craft-libs crates stay where they are. Fetched through the storytold/craft-libs URL, so cargo-deny's allow-git is unchanged. To be replaced by the merge commit once #133 lands. * Print: run at most four two-sided reads at once A driver Windows can't reach holds its two-sided read for about 48 s, so picking printer after printer started a thread for each. At most four now run at once; past that, the printer picked is asked once a read finishes. Tests: hanging reads are capped and the picked printer is asked after one finishes; a list that already says whether a driver takes two-sided settings is used as it is, with no driver asked. * Repin craft-print to craft-libs main, where #133 merged (b6b8a55b) --------- Co-authored-by: FredApps <153173854+FredApps@users.noreply.github.com>