Skip to content

refactor(pdu)!: remove ironrdp-egfx duplicates from ironrdp-pdu#1303

Open
Greg Lamberson (glamberson) wants to merge 1 commit into
Devolutions:masterfrom
lamco-admin:refactor/pdu-remove-egfx-duplicates
Open

refactor(pdu)!: remove ironrdp-egfx duplicates from ironrdp-pdu#1303
Greg Lamberson (glamberson) wants to merge 1 commit into
Devolutions:masterfrom
lamco-admin:refactor/pdu-remove-egfx-duplicates

Conversation

@glamberson
Copy link
Copy Markdown
Contributor

Summary

BREAKING CHANGE

The ironrdp_pdu::rdp::vc::dvc::gfx::* symbols and the ironrdp_pdu::dvc top-level re-export are removed. Consumers should use ironrdp_egfx::pdu::* instead. The egfx-side has API parity for every leaf type and replaces the ServerPdu + ClientPdu split with a unified GfxPdu enum.

Validation

cargo xtask check fmt/lints/tests/typos/locks all pass.

Net diff: 11 files, +13 / -2174.

PR Devolutions#1057 introduced the `ironrdp-egfx` crate as the canonical home for
EGFX PDU types but left the original definitions in
`crates/ironrdp-pdu/src/rdp/vc/dvc/gfx/` in place. The two have coexisted
as duplicate definitions for 14 weeks; the egfx-side has evolved
(`#[non_exhaustive]` markers via Devolutions#1284, exclusive-bounds rectangles via
Devolutions#1238 and Devolutions#1246, ClearCodec encode helpers including `Avc420Region` and
`encode_avc420_bitmap_stream`, the unified `GfxPdu` enum, new PDU types
`CacheImportOfferPdu`/`CacheEntryMetadata`/`MapSurfaceToWindowPdu`/
`QoeFrameAcknowledgePdu`), while the pdu-side has been frozen at the
Devolutions#1057 snapshot receiving only mechanical updates (clippy, edition,
`arbitrary` feature via Devolutions#1272).

No file in the workspace imports the pdu-side gfx path except
`ironrdp-testsuite-core`, which is migrated here from
`ironrdp_pdu::rdp::vc::dvc::gfx::*` to `ironrdp_egfx::pdu::*`. The
`ServerPdu`/`ClientPdu` split-wrapper pattern collapses to the
egfx-side's unified `GfxPdu`. Four `InclusiveRectangle` field sites in
`graphics_messages.rs` (`WireToSurface1Pdu::destination_rectangle`,
`SolidFillPdu::rectangles`, `SurfaceToSurfacePdu::source_rectangle`,
`SurfaceToCachePdu::source_rectangle`) are updated to
`ExclusiveRectangle` per the post-Devolutions#1238/Devolutions#1246 workspace standard;
`Avc420BitmapStream::rectangles` retains `InclusiveRectangle` per the
egfx-side type definition.

The `crates/ironrdp-pdu/src/rdp/vc/dvc/` subtree contained only the
gfx module, so the entire subtree is removed along with the
`pub mod dvc;` declaration in `vc/mod.rs` and the
`pub use crate::rdp::vc::dvc;` re-export in `lib.rs`.

BREAKING CHANGE: The `ironrdp_pdu::rdp::vc::dvc::gfx::*` symbols and
the `ironrdp_pdu::dvc` top-level re-export are removed. Consumers
should use `ironrdp_egfx::pdu::*` instead. The egfx-side has API
parity for every leaf type and replaces the `ServerPdu` + `ClientPdu`
split with a unified `GfxPdu` enum.

Test plan: `cargo xtask check fmt`, `lints`, `tests`, `typos`, `locks`
all green on the change set.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

1 participant