From 8cc9e5f4e93d12c2023cc5abae98276fd05d171c Mon Sep 17 00:00:00 2001 From: David Fort Date: Mon, 16 Sep 2024 17:56:05 +0200 Subject: [PATCH] rails: add missing functions client implementation The client side callbacks for textScale and CaretBlinkRate were not implemented. --- channels/rail/client/rail_main.c | 20 ++++++++++++++++++ channels/rail/client/rail_orders.c | 34 ++++++++++++++++++++++++++++++ channels/rail/client/rail_orders.h | 2 ++ 3 files changed, 56 insertions(+) diff --git a/channels/rail/client/rail_main.c b/channels/rail/client/rail_main.c index 07ec616ce..89e7433c1 100644 --- a/channels/rail/client/rail_main.c +++ b/channels/rail/client/rail_main.c @@ -498,6 +498,24 @@ static UINT rail_client_snap_arrange(RailClientContext* context, const RAIL_SNAP return rail_send_client_snap_arrange_order(rail, snap); } +static UINT rail_client_text_scale(RailClientContext* context, UINT32 textScale) +{ + if (!context || !context->handle) + return ERROR_INVALID_PARAMETER; + + railPlugin* rail = (railPlugin*)context->handle; + return rail_send_client_text_scale_order(rail, textScale); +} + +static UINT rail_client_caret_blink_rate(RailClientContext* context, UINT32 rate) +{ + if (!context || !context->handle) + return ERROR_INVALID_PARAMETER; + + railPlugin* rail = (railPlugin*)context->handle; + return rail_send_client_caret_blink_rate_order(rail, rate); +} + static VOID VCAPITYPE rail_virtual_channel_open_event_ex(LPVOID lpUserParam, DWORD openHandle, UINT event, LPVOID pData, UINT32 dataLength, UINT32 totalLength, @@ -707,6 +725,8 @@ FREERDP_ENTRY_POINT(BOOL VCAPITYPE VirtualChannelEntryEx(PCHANNEL_ENTRY_POINTS p context->ClientSnapArrange = rail_client_snap_arrange; context->ClientCloak = rail_client_cloak; context->ClientCompartmentInfo = rail_client_compartment_info; + context->ClientTextScale = rail_client_text_scale; + context->ClientCaretBlinkRate = rail_client_caret_blink_rate; rail->rdpcontext = pEntryPointsEx->context; rail->context = context; isFreerdp = TRUE; diff --git a/channels/rail/client/rail_orders.c b/channels/rail/client/rail_orders.c index d578e177d..41b4418fc 100644 --- a/channels/rail/client/rail_orders.c +++ b/channels/rail/client/rail_orders.c @@ -1573,3 +1573,37 @@ UINT rail_send_client_snap_arrange_order(railPlugin* rail, const RAIL_SNAP_ARRAN Stream_Write_INT16(s, snap->bottom); return rail_send_pdu(rail, s, TS_RAIL_ORDER_SNAP_ARRANGE); } + +UINT rail_send_client_text_scale_order(railPlugin* rail, UINT32 textScale) +{ + if (!rail) + return ERROR_INVALID_PARAMETER; + + wStream* s = rail_pdu_init(4); + + if (!s) + { + WLog_ERR(TAG, "rail_pdu_init failed!"); + return CHANNEL_RC_NO_MEMORY; + } + + Stream_Write_UINT32(s, textScale); + return rail_send_pdu(rail, s, TS_RAIL_ORDER_TEXTSCALEINFO); +} + +UINT rail_send_client_caret_blink_rate_order(railPlugin* rail, UINT32 rate) +{ + if (!rail) + return ERROR_INVALID_PARAMETER; + + wStream* s = rail_pdu_init(4); + + if (!s) + { + WLog_ERR(TAG, "rail_pdu_init failed!"); + return CHANNEL_RC_NO_MEMORY; + } + + Stream_Write_UINT32(s, rate); + return rail_send_pdu(rail, s, TS_RAIL_ORDER_CARETBLINKINFO); +} diff --git a/channels/rail/client/rail_orders.h b/channels/rail/client/rail_orders.h index 1b15aae8b..6817fa1d5 100644 --- a/channels/rail/client/rail_orders.h +++ b/channels/rail/client/rail_orders.h @@ -56,5 +56,7 @@ UINT rail_send_client_cloak_order(railPlugin* rail, const RAIL_CLOAK* cloak); UINT rail_send_client_snap_arrange_order(railPlugin* rail, const RAIL_SNAP_ARRANGE* snap); UINT rail_send_client_compartment_info_order(railPlugin* rail, const RAIL_COMPARTMENT_INFO_ORDER* compartmentInfo); +UINT rail_send_client_text_scale_order(railPlugin* rail, UINT32 textScale); +UINT rail_send_client_caret_blink_rate_order(railPlugin* rail, UINT32 rate); #endif /* FREERDP_CHANNEL_RAIL_CLIENT_ORDERS_H */