Skip to content

Commit 8e84fe5

Browse files
author
Isaiah Becker-Mayer
authored
feat: configurable performance flags (#426)
1 parent 1e53669 commit 8e84fe5

File tree

6 files changed

+16
-6
lines changed

6 files changed

+16
-6
lines changed

crates/ironrdp-client/src/config.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ use clap::clap_derive::ValueEnum;
77
use clap::Parser;
88
use ironrdp::connector::{self, Credentials};
99
use ironrdp::pdu::rdp::capability_sets::MajorPlatformType;
10+
use ironrdp::pdu::rdp::client_info::PerformanceFlags;
1011
use tap::prelude::*;
1112

1213
const DEFAULT_WIDTH: u16 = 1920;
@@ -337,6 +338,7 @@ impl Config {
337338
no_server_pointer: args.no_server_pointer,
338339
autologon: args.autologon,
339340
pointer_software_rendering: true,
341+
performance_flags: PerformanceFlags::default(),
340342
};
341343

342344
Ok(Self {

crates/ironrdp-connector/src/connection.rs

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ use std::borrow::Cow;
22
use std::mem;
33
use std::net::SocketAddr;
44

5-
use ironrdp_pdu::rdp::client_info::{PerformanceFlags, TimezoneInfo};
5+
use ironrdp_pdu::rdp::client_info::TimezoneInfo;
66
use ironrdp_pdu::write_buf::WriteBuf;
77
use ironrdp_pdu::{decode, encode_vec, gcc, mcs, nego, rdp, PduEncode, PduHint};
88
use ironrdp_svc::{StaticChannelSet, StaticVirtualChannel, SvcClientProcessor};
@@ -749,11 +749,7 @@ fn create_client_info_pdu(config: &Config, routing_addr: &SocketAddr) -> rdp::Cl
749749
daylight_bias: 0,
750750
})
751751
.session_id(0)
752-
.performance_flags(
753-
PerformanceFlags::DISABLE_FULLWINDOWDRAG
754-
| PerformanceFlags::DISABLE_MENUANIMATIONS
755-
| PerformanceFlags::ENABLE_FONT_SMOOTHING,
756-
)
752+
.performance_flags(config.performance_flags)
757753
.build(),
758754
},
759755
};

crates/ironrdp-connector/src/lib.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ pub use channel_connection::{ChannelConnectionSequence, ChannelConnectionState};
2424
pub use connection::{encode_send_data_request, ClientConnector, ClientConnectorState, ConnectionResult};
2525
pub use connection_finalization::{ConnectionFinalizationSequence, ConnectionFinalizationState};
2626
use ironrdp_pdu::rdp::capability_sets;
27+
use ironrdp_pdu::rdp::client_info::PerformanceFlags;
2728
use ironrdp_pdu::write_buf::WriteBuf;
2829
use ironrdp_pdu::{encode_buf, encode_vec, gcc, x224, PduEncode, PduHint};
2930
pub use license_exchange::{LicenseExchangeSequence, LicenseExchangeState};
@@ -150,6 +151,7 @@ pub struct Config {
150151
// FIXME(@CBenoit): these are client-only options, not part of the connector.
151152
pub no_server_pointer: bool,
152153
pub pointer_software_rendering: bool,
154+
pub performance_flags: PerformanceFlags,
153155
}
154156

155157
ironrdp_pdu::assert_impl!(Config: Send, Sync);

crates/ironrdp-pdu/src/rdp/client_info.rs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -597,6 +597,12 @@ bitflags! {
597597
}
598598
}
599599

600+
impl Default for PerformanceFlags {
601+
fn default() -> Self {
602+
Self::DISABLE_FULLWINDOWDRAG | Self::DISABLE_MENUANIMATIONS | Self::ENABLE_FONT_SMOOTHING
603+
}
604+
}
605+
600606
#[repr(u16)]
601607
#[derive(Debug, Copy, Clone, PartialEq, Eq, FromPrimitive, ToPrimitive)]
602608
pub enum AddressFamily {

crates/ironrdp-web/src/session.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ use ironrdp::connector::credssp::KerberosConfig;
1616
use ironrdp::connector::{self, ClientConnector, Credentials};
1717
use ironrdp::graphics::image_processing::PixelFormat;
1818
use ironrdp::pdu::input::fast_path::FastPathInputEvent;
19+
use ironrdp::pdu::rdp::client_info::PerformanceFlags;
1920
use ironrdp::pdu::write_buf::WriteBuf;
2021
use ironrdp::session::image::DecodedImage;
2122
use ironrdp::session::{ActiveStage, ActiveStageOutput, GracefulDisconnectReason};
@@ -759,6 +760,7 @@ fn build_config(
759760
no_server_pointer: false,
760761
autologon: false,
761762
pointer_software_rendering: false,
763+
performance_flags: PerformanceFlags::default(),
762764
}
763765
}
764766

crates/ironrdp/examples/screenshot.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ use ironrdp::pdu::gcc::KeyboardType;
3131
use ironrdp::pdu::rdp::capability_sets::MajorPlatformType;
3232
use ironrdp::session::image::DecodedImage;
3333
use ironrdp::session::{ActiveStage, ActiveStageOutput};
34+
use ironrdp_pdu::rdp::client_info::PerformanceFlags;
3435

3536
const HELP: &str = "\
3637
USAGE:
@@ -216,6 +217,7 @@ fn build_config(username: String, password: String, domain: Option<String>) -> c
216217
no_server_pointer: true,
217218
autologon: false,
218219
pointer_software_rendering: true,
220+
performance_flags: PerformanceFlags::default(),
219221
}
220222
}
221223

0 commit comments

Comments
 (0)