Commit Graph
57 Commits
Author SHA1 Message Date
Zhihui Song 800a6f9fd7 test: bound native tail reads instead of waiting indefinitely in DataReader 2026-11-08 18:41:10 +08:00
Zhihui Song 03a4fb6387 fix: clarify path validation and clean up Windows stream tests safely 2026-11-08 00:05:46 +08:00
Zhihui Song b334ebbbfe fix: read PDF jobs on demand through a read-only file stream 2026-11-07 15:05:34 +08:00
Zhihui Song 17f5f1e3c5 fix: load Windows PDF print jobs through a stream 2026-11-07 14:12:05 +08:00
cart2notasmn-opsandClaude Opus 5.5 f256775bec fix: create the Direct2D factory multi-threaded for Windows.Data.Pdf
Windows.Data.Pdf renders a page on several worker threads that share the
device context passed to RenderPageToDeviceContext. With a single-threaded
factory Direct2D takes no locks, so those threads race inside d2d1.dll:
access violations reading near null (d2d1.dll+0x93fd4, address 0x338) or
executing freed memory (BEX64), mostly on long jobs of scanned pages.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-27 12:31:35 -03:00
skylar taylor-barrick 5f80b9baf6 feat: report PDF page total before processing 2026-10-12 23:08:56 +02:00
skylar taylor-barrick 3c60c53482 fix: propagate DXGI terminal failures and report PDF page processing 2026-10-12 23:08:35 +02:00
ArcticLampyridandCopilot 049b90e1c9 perf(test-utils): prefer to use -InputObject instead of -Name, avoiding double searching
Co-authored-by: Copilot <copilot@github.com>
2026-04-26 03:44:06 +08:00
ArcticLampyrid 40210f4872 fix(test-utils): canonicalize file path 2026-04-26 03:44:06 +08:00
ArcticLampyrid cc4826764d chore: upgrade dependencies 2026-04-25 03:20:33 +08:00
ArcticLampyrid fba35cfc91 feat(test_utils): file printer device (#11) 2026-04-25 02:13:39 +08:00
ArcticLampyrid 774996a59b feat: add Chromium-style safe EMF playback 2026-04-22 03:21:29 +08:00
ArcticLampyridandTATSUNO “Taz” Yasuhiro a61a99ff11 feat: align with Chromium's behavior for GDI printing initialization
Co-authored-by: TATSUNO “Taz” Yasuhiro <ytatsuno.jp@gmail.com>
2026-04-21 02:18:15 +08:00
ArcticLampyridandClaude Sonnet 4.6 b303b9f0ad fix: avoid TOCTOU race in printer enumeration by retrying on insufficient buffer
Replace the probe-then-fetch pattern with a grow-on-demand loop: start with a
null buffer and reallocate whenever EnumPrintersW returns ERROR_INSUFFICIENT_BUFFER,
so a printer list change between the two calls no longer causes a failure.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-21 02:05:14 +08:00
ArcticLampyrid 8ebd2a2593 feat: add PageImageableSize for fetching imageable size 2024-08-29 05:17:49 +08:00
ArcticLampyrid b96fa1ec44 feat: fetch capabilities for given ticket 2024-08-29 04:33:33 +08:00
ArcticLampyrid 6d92ece705 feat: add utility to specify copies (#1) 2024-08-16 00:09:29 +08:00
ArcticLampyrid a4c7fee2f0 feat!: remove listing DocumentDuplex as I never fetch it.
.NET do not provide support for listing it either.
2024-08-15 23:47:40 +08:00
ArcticLampyrid fd85c2eedd feat: image printer 2024-08-15 16:22:34 +08:00
ArcticLampyrid 4ab5855fcc refactor: move dxgi print logic into seperated mod for reusage 2024-08-15 16:20:01 +08:00
ArcticLampyrid 84f1daa394 fix: set proper dpi for DirectX render 2024-07-10 18:19:27 +08:00
ArcticLampyrid 562466caca feat: add Windows.Data.Pdf backend for pdf printing 2024-07-08 07:27:53 +08:00
ArcticLampyrid 39241a7247 chore: migrate lazy_static to OnceLock 2024-06-22 07:23:07 +08:00
ArcticLampyrid e63c0c7e51 chore: update dependencies 2024-06-22 07:10:37 +08:00
ArcticLampyrid 4747cc7dbd fix!: use plural form in capabilities for option packs listing 2024-06-22 02:34:30 +08:00
ArcticLampyrid b0f26c2e92 feat: add option pack for page resolution 2024-06-22 02:31:38 +08:00
ArcticLampyrid eec259b661 feat: add option pack for page output color 2024-06-22 01:44:15 +08:00
ArcticLampyrid 4bf1165cc8 feat: add option pack for duplex type 2024-06-21 22:46:45 +08:00
ArcticLampyrid 91fbf3f762 feat!: include feature option pack to reuse code 2024-06-21 20:18:32 +08:00
ArcticLampyrid 9026208a0d feat: add helper for PageOrientation 2024-06-21 18:36:48 +08:00
ArcticLampyrid 36d3fbc14c feat: add display_name to PageMediaSize 2024-06-21 18:36:32 +08:00
ArcticLampyrid 681b6fd8bd fix: do not include that source error in its own Display representation
Link: https://alampy.com/2024/05/14/a-brief-of-error-chain-in-rust/
Link: https://github.com/rust-lang/api-guidelines/pull/210
2024-06-21 15:05:07 +08:00
ArcticLampyrid 4c835c39a0 perf: make initializer for NULL_DEVICE value const 2024-06-21 15:00:52 +08:00
ArcticLampyrid 58c1170707 fix: ensure port and driver exist for null device 2024-03-14 17:51:47 +08:00
ArcticLampyrid 3e067c1499 feat: (re-)export the OwnedName type 2024-03-14 16:07:47 +08:00
ArcticLampyrid e94b6046d1 feat: expose error chains 2024-03-14 16:07:47 +08:00
ArcticLampyrid 6651a8a9af docs: initial documents 2024-03-14 16:07:47 +08:00
ArcticLampyrid d39ad272c1 test: use test_utils to contains code supporting tests 2024-03-14 16:07:40 +08:00
ArcticLampyrid 46ad3deccc refactor!: reorganize document model for print schema 2024-03-14 12:35:47 +08:00
ArcticLampyrid 19869b7de4 refactor: reorganize print schema parser 2024-03-14 01:58:21 +08:00
ArcticLampyrid b751858cec refactor: rename PrinterInfo to PrinterDevice 2024-03-14 01:36:35 +08:00
ArcticLampyrid 9d8867094c chore: enable only on Windows 2024-03-13 14:50:15 +08:00
ArcticLampyrid 2b980f0aee test: cover more branches 2024-03-12 17:34:26 +08:00
ArcticLampyrid b66ab0d74c feat: facilitate picking media size 2024-03-12 17:16:01 +08:00
ArcticLampyrid b68abe8ca3 feat: handle print schema structurally 2024-03-12 01:53:51 +08:00
ArcticLampyrid 526866498a test: split into different modules 2024-03-12 00:26:31 +08:00
ArcticLampyrid 1fe7dbf49a refactor: use Vec<u8> inside print ticket 2024-03-11 02:24:44 +08:00
ArcticLampyrid a839f6b188 refactor: use print ticket type when merging 2024-03-10 20:44:06 +08:00
ArcticLampyrid 2878ea4e71 test: initial unit tests 2024-03-10 03:44:14 +08:00
ArcticLampyrid 35dd64b5d7 feat: initial support for print ticket 2024-03-10 02:41:01 +08:00