GUACAMOLE-2063: Enable support for RDP orders that are enabled by default in FreeRDP.

This commit is contained in:
Michael Jumper 2025-05-16 23:41:39 -07:00
parent 95466a1ae9
commit 3f5d0b49cd
No known key found for this signature in database
GPG Key ID: 5B2977AEE5E4518F

View File

@ -1535,6 +1535,9 @@ void guac_rdp_push_settings(guac_client* client,
freerdp_settings_set_bool(rdp_settings, FreeRDP_FrameMarkerCommandEnabled, TRUE);
freerdp_settings_set_bool(rdp_settings, FreeRDP_SurfaceFrameMarkerEnabled, TRUE);
freerdp_settings_set_bool(rdp_settings, FreeRDP_FastPathInput, TRUE);
freerdp_settings_set_bool(rdp_settings, FreeRDP_FastPathOutput, TRUE);
/* Enable RemoteFX / Graphics Pipeline */
if (guac_settings->enable_gfx) {
@ -1548,7 +1551,6 @@ void guac_rdp_push_settings(guac_client* client,
}
/* Required for RemoteFX / Graphics Pipeline */
freerdp_settings_set_bool(rdp_settings, FreeRDP_FastPathOutput, TRUE);
freerdp_settings_set_uint32(rdp_settings, FreeRDP_ColorDepth, RDP_GFX_REQUIRED_DEPTH);
freerdp_settings_set_bool(rdp_settings, FreeRDP_SoftwareGdi, TRUE);
@ -1733,19 +1735,6 @@ void guac_rdp_push_settings(guac_client* client,
freerdp_settings_set_uint32(rdp_settings, FreeRDP_OsMinorType, OSMINORTYPE_UNSPECIFIED);
freerdp_settings_set_bool(rdp_settings, FreeRDP_DesktopResize, TRUE);
/* Claim support only for specific updates, independent of FreeRDP defaults */
BYTE* order_support = freerdp_settings_get_pointer_writable(rdp_settings, FreeRDP_OrderSupport);
if (order_support) {
ZeroMemory(order_support, GUAC_RDP_ORDER_SUPPORT_LENGTH);
order_support[NEG_DSTBLT_INDEX] = TRUE;
order_support[NEG_SCRBLT_INDEX] = TRUE;
order_support[NEG_MEMBLT_INDEX] = !guac_settings->disable_bitmap_caching;
order_support[NEG_MEMBLT_V2_INDEX] = !guac_settings->disable_bitmap_caching;
order_support[NEG_GLYPH_INDEX_INDEX] = !guac_settings->disable_glyph_caching;
order_support[NEG_FAST_INDEX_INDEX] = !guac_settings->disable_glyph_caching;
order_support[NEG_FAST_GLYPH_INDEX] = !guac_settings->disable_glyph_caching;
}
#ifdef HAVE_RDPSETTINGS_ALLOWUNANOUNCEDORDERSFROMSERVER
/* Do not consider server use of unannounced orders to be a fatal error */
freerdp_settings_set_bool(rdp_settings, FreeRDP_AllowUnanouncedOrdersFromServer, TRUE);
@ -1780,6 +1769,8 @@ void guac_rdp_push_settings(guac_client* client,
rdp_settings->FrameMarkerCommandEnabled = TRUE;
rdp_settings->SurfaceFrameMarkerEnabled = TRUE;
rdp_settings->FastPathInput = TRUE;
rdp_settings->FastPathOutput = TRUE;
/* Enable RemoteFX / Graphics Pipeline */
if (guac_settings->enable_gfx) {
@ -1794,7 +1785,6 @@ void guac_rdp_push_settings(guac_client* client,
}
/* Required for RemoteFX / Graphics Pipeline */
rdp_settings->FastPathOutput = TRUE;
rdp_settings->ColorDepth = RDP_GFX_REQUIRED_DEPTH;
rdp_settings->SoftwareGdi = TRUE;
@ -1979,16 +1969,6 @@ void guac_rdp_push_settings(guac_client* client,
rdp_settings->OsMinorType = OSMINORTYPE_UNSPECIFIED;
rdp_settings->DesktopResize = TRUE;
/* Claim support only for specific updates, independent of FreeRDP defaults */
ZeroMemory(rdp_settings->OrderSupport, GUAC_RDP_ORDER_SUPPORT_LENGTH);
rdp_settings->OrderSupport[NEG_DSTBLT_INDEX] = TRUE;
rdp_settings->OrderSupport[NEG_SCRBLT_INDEX] = TRUE;
rdp_settings->OrderSupport[NEG_MEMBLT_INDEX] = !guac_settings->disable_bitmap_caching;
rdp_settings->OrderSupport[NEG_MEMBLT_V2_INDEX] = !guac_settings->disable_bitmap_caching;
rdp_settings->OrderSupport[NEG_GLYPH_INDEX_INDEX] = !guac_settings->disable_glyph_caching;
rdp_settings->OrderSupport[NEG_FAST_INDEX_INDEX] = !guac_settings->disable_glyph_caching;
rdp_settings->OrderSupport[NEG_FAST_GLYPH_INDEX] = !guac_settings->disable_glyph_caching;
#ifdef HAVE_RDPSETTINGS_ALLOWUNANOUNCEDORDERSFROMSERVER
/* Do not consider server use of unannounced orders to be a fatal error */
rdp_settings->AllowUnanouncedOrdersFromServer = TRUE;