Skip to content
Open
Show file tree
Hide file tree
Changes from 9 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 32 additions & 0 deletions crates/iron-remote-desktop/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -243,6 +243,38 @@ macro_rules! make_bridge {
Self($crate::SessionBuilder::render_canvas(&self.0, canvas))
}

// tdmanh1 24/08/2026 expose more function for wasm app
#[wasm_bindgen(js_name = setEnableServerPointer)]
pub fn set_enable_server_pointer(&self, enable_server_pointer: bool) -> Self {
Self($crate::SessionBuilder::set_enable_server_pointer(
&self.0,
enable_server_pointer,
))
}

#[wasm_bindgen(js_name = setPointerSoftwareRendering)]
pub fn set_pointer_software_rendering(&self, pointer_software_rendering: bool) -> Self {
Self($crate::SessionBuilder::set_pointer_software_rendering(
&self.0,
pointer_software_rendering,
))
}

#[wasm_bindgen(js_name = setEnableAudioPlayback)]
pub fn set_enable_audio_playback(&self, enable_audio_playback: bool) -> Self {
Self($crate::SessionBuilder::set_enable_audio_playback(
&self.0,
enable_audio_playback,
))
}
#[wasm_bindgen(js_name = setDesktopScaleFactor)]
pub fn set_desktop_scale_factor(&self, desktop_scale_factor: u32) -> Self {
Self($crate::SessionBuilder::set_desktop_scale_factor(
&self.0,
desktop_scale_factor,
))
}

#[wasm_bindgen(js_name = setCursorStyleCallback)]
pub fn set_cursor_style_callback(&self, callback: $crate::internal::web_sys::js_sys::Function) -> Self {
Self($crate::SessionBuilder::set_cursor_style_callback(
Expand Down
13 changes: 13 additions & 0 deletions crates/iron-remote-desktop/src/session.rs
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,19 @@ pub trait SessionBuilder {
#[must_use]
fn render_canvas(&self, canvas: HtmlCanvasElement) -> Self;

// tdmanh1 24/08/2026 expose more function for wasm app
#[must_use]
fn set_enable_server_pointer(&self, enable_server_pointer: bool) -> Self;

#[must_use]
fn set_pointer_software_rendering(&self, pointer_software_rendering: bool) -> Self;

#[must_use]
fn set_enable_audio_playback(&self, enable_audio_playback: bool) -> Self;

#[must_use]
fn set_desktop_scale_factor(&self, desktop_scale_factor: u32) -> Self;

#[must_use]
fn set_cursor_style_callback(&self, callback: js_sys::Function) -> Self;

Expand Down
75 changes: 69 additions & 6 deletions crates/ironrdp-web/src/session.rs
Original file line number Diff line number Diff line change
Expand Up @@ -92,6 +92,11 @@ struct SessionBuilderInner {
use_display_control: bool,
enable_credssp: bool,
outbound_message_size_limit: Option<usize>,
// tdmanh1 24/08/2026 expose more flag for wasm app
enable_server_pointer: bool,
pointer_software_rendering: bool,
enable_audio_playback: bool,
desktop_scale_factor: u32,
}

impl Default for SessionBuilderInner {
Expand Down Expand Up @@ -134,6 +139,12 @@ impl Default for SessionBuilderInner {
use_display_control: false,
enable_credssp: true,
outbound_message_size_limit: None,

// tdmanh1 24/08/2026 expose more flag for wasm app
enable_server_pointer: false,
pointer_software_rendering: false,
enable_audio_playback: false,
desktop_scale_factor: 0,
}
}
}
Expand Down Expand Up @@ -198,6 +209,31 @@ impl iron_remote_desktop::SessionBuilder for SessionBuilder {
self.clone()
}

// tdmanh1 24/08/2026 expose more function for wasm app
/// Optional
fn set_enable_server_pointer(&self, enable_server_pointer: bool) -> Self {
self.0.borrow_mut().enable_server_pointer = enable_server_pointer;
self.clone()
}

/// Optional
fn set_pointer_software_rendering(&self, pointer_software_rendering: bool) -> Self {
self.0.borrow_mut().pointer_software_rendering = pointer_software_rendering;
self.clone()
}

/// Optional
fn set_enable_audio_playback(&self, enable_audio_playback: bool) -> Self {
self.0.borrow_mut().enable_audio_playback = enable_audio_playback;
self.clone()
}

/// Optional
fn set_desktop_scale_factor(&self, desktop_scale_factor: u32) -> Self {
self.0.borrow_mut().desktop_scale_factor = desktop_scale_factor;
self.clone()
}

/// Required.
///
/// # Callback signature:
Expand Down Expand Up @@ -357,6 +393,11 @@ impl iron_remote_desktop::SessionBuilder for SessionBuilder {
printer_device_id,
printer_driver_name,
outbound_message_size_limit,
// tdmanh1 24/08/2026 expose more flag for wasm app
enable_server_pointer,
pointer_software_rendering,
enable_audio_playback,
desktop_scale_factor,
);

{
Expand All @@ -373,7 +414,11 @@ impl iron_remote_desktop::SessionBuilder for SessionBuilder {
kdc_proxy_url = inner.kdc_proxy_url.clone();
client_name = inner.client_name.clone();
desktop_size = inner.desktop_size;

// tdmanh1 24/08/2026 expose more flag for wasm app
enable_server_pointer = inner.enable_server_pointer;
pointer_software_rendering = inner.pointer_software_rendering;
enable_audio_playback = inner.enable_audio_playback;
desktop_scale_factor = inner.desktop_scale_factor;
render_canvas = inner.render_canvas.clone().context("render_canvas missing")?;

set_cursor_style_callback = inner
Expand Down Expand Up @@ -407,7 +452,18 @@ impl iron_remote_desktop::SessionBuilder for SessionBuilder {

info!("Connect to RDP host");

let mut config = build_config(username, password, server_domain, client_name.clone(), desktop_size);
let mut config = build_config(
username,
password,
server_domain,
client_name.clone(),
desktop_size,
// tdmanh1 24/08/2026 expose more flag for wasm app
enable_server_pointer,
pointer_software_rendering,
enable_audio_playback,
desktop_scale_factor
);

let enable_credssp = self.0.borrow().enable_credssp;
config.enable_credssp = enable_credssp;
Expand Down Expand Up @@ -1440,6 +1496,11 @@ fn build_config(
domain: Option<String>,
client_name: String,
desktop_size: DesktopSize,
// tdmanh1 24/08/2026 expose more flag for wasm app
enable_server_pointer: bool,
pointer_software_rendering: bool,
enable_audio_playback: bool,
desktop_scale_factor: u32,
) -> connector::Config {
connector::Config {
credentials: Credentials::UsernamePassword { username, password },
Expand Down Expand Up @@ -1479,15 +1540,17 @@ fn build_config(
client_dir: "C:\\Windows\\System32\\mstscax.dll".to_owned(),
platform: ironrdp::pdu::rdp::capability_sets::MajorPlatformType::UNSPECIFIED,
compression_type: None,
enable_server_pointer: false,
// tdmanh1 24/08/2026 expose more flag for wasm app
enable_server_pointer: enable_server_pointer,
autologon: false,
enable_audio_playback: false,
enable_audio_playback: enable_audio_playback,
enable_audio_capture: false,
request_data: None,
pointer_software_rendering: false,
pointer_software_rendering: pointer_software_rendering,
multitransport_flags: None,
performance_flags: PerformanceFlags::default(),
desktop_scale_factor: 0,
// tdmanh1 24/08/2026 expose more flag for wasm app
desktop_scale_factor: desktop_scale_factor,
hardware_id: None,
license_cache: None,
timezone_info: TimezoneInfo::default(),
Expand Down
Loading