You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
- Negotiate the MCS message channel ([#1347](https://github.com/Devolutions/IronRDP/issues/1347)) ([efa5732805](https://github.com/Devolutions/IronRDP/commit/efa573280572f3c0f0270a40ae51a154562706cc))
14
+
15
+
Updates the handshake to properly negotiate the MCS message channel by advertising Extended Client Data Blocks support and, when requested by the client, allocating/joining the message channel and surfacing its ID in AcceptorResult. This enables server-initiated PDUs that must use the message channel (e.g., network auto-detect) to have a valid transport.
- Release outgoing locks before initiating a file copy ([#1375](https://github.com/Devolutions/IronRDP/issues/1375)) ([5d534f10a6](https://github.com/Devolutions/IronRDP/commit/5d534f10a6f62ac7a860521b4e95c8c47b754612))
14
+
15
+
- Lower verbosity of routine logs in library crates ([c36032f91b](https://github.com/Devolutions/IronRDP/commit/c36032f91b27390a2cd34bfb300cfbe099d847a9))
16
+
17
+
Library crates should not emit info! for routine, repeating operations;
18
+
that floods the default logs of the final consumer, which owns the
19
+
verbosity decision. Reserve info! for rare connection/session lifecycle
20
+
milestones, debug! for significant one-off events, and trace! for the
21
+
fine-grained detail only needed when nothing else explains a problem.
- Stay in CapabilitiesExchange when activation handles DeactivateAll ([#1371](https://github.com/Devolutions/IronRDP/issues/1371)) ([a4fde9fc50](https://github.com/Devolutions/IronRDP/commit/a4fde9fc50f41d1534f32e619bbe0bbbddc64f25))
14
+
15
+
### <!-- 7 -->Build
16
+
17
+
- Align sspi and picky dependencies ([#1385](https://github.com/Devolutions/IronRDP/issues/1385)) ([0a461b5d36](https://github.com/Devolutions/IronRDP/commit/0a461b5d366677fd2f0f664a4f0074e4ab697c42))
- Replace softbuffer with direct put_image_data canvas present ([#1374](https://github.com/Devolutions/IronRDP/issues/1374)) ([d3705af18c](https://github.com/Devolutions/IronRDP/commit/d3705af18cff1851f4d48017affcb85aaa678d57))
14
+
15
+
## Summary
16
+
17
+
The web client presented frames through `softbuffer`, whose web backend
18
+
repacks
19
+
the **whole surface** (RGBA → u32 → RGBA into a fresh buffer) on every
20
+
present.
21
+
This replaces it with a direct `put_image_data` that uploads only the
22
+
dirty
23
+
region, and drops the `softbuffer` dependency.
24
+
25
+
Same idea as the IronVNC change.
26
+
27
+
## What changed
28
+
29
+
- Remove the `softbuffer` dependency; present each dirty region with
30
+
`put_image_data` at its origin.
31
+
- No full-surface buffer and no per-region scratch.
32
+
`extract_partial_image` fills
33
+
a single `WriteBuf` reused across frames, so steady-state draws don't
34
+
allocate.
35
+
- Force opaque alpha before upload (kept — see Correctness).
36
+
- Add `WriteBuf::filled_mut` to `ironrdp-core` (mutable counterpart of
37
+
`filled`).
38
+
-`web-sys`: add `CanvasRenderingContext2d` + `ImageData`, drop the
39
+
softbuffer-only
40
+
features.
41
+
42
+
## Performance
43
+
44
+
Draw-stage time on a 1080p replay (595 frames / 110 dirty regions),
45
+
headless
46
+
Chromium, 8 measured passes × 3 runs, median. Both rows are reproducible
47
+
branches
48
+
off the replay-bench harness; the only difference is the render path.
0 commit comments