Control: tags -1 patch
1.4.11+dfsg-2 bad 1.4.12+dfsg-1 bad 1.4.13+dfsg-1 bad1.4.16+dfsg-1 good 1.4.17+dfsg-1 good
git bisect to the rescue The commit which fixed this issue is e6a8e76e69f6d614abdf8a2677a37e53b08829c5 is the first bad commit commit e6a8e76e69f6d614abdf8a2677a37e53b08829c5 Author: Antenore Gatta <anten...@simbiosi.org> Date: Tue Apr 27 10:43:35 2021 +0200 Do not use alpha as it is not used for the Desktop It may fix #2456 Signed-off-by: Antenore Gatta <anten...@simbiosi.org> plugins/rdp/rdp_plugin.c | 43 +++++++++++++++++++++++++++++++++---------- 1 file changed, 33 insertions(+), 10 deletions(-)Attached is a backport of this patch for 1.4.11 which fixes the issue for me.
It would be great if you can consider this patch for bullseye. Regards, Michael
From 5933f73f3be0402eaffcdf27eae6006108607cfa Mon Sep 17 00:00:00 2001 From: Antenore Gatta <anten...@simbiosi.org> Date: Tue, 27 Apr 2021 10:43:35 +0200 Subject: [PATCH] Do not use alpha as it is not used for the Desktop It may fix #2456 Signed-off-by: Antenore Gatta <anten...@simbiosi.org> --- plugins/rdp/rdp_plugin.c | 43 ++++++++++++++++++++++++++++++---------- 1 file changed, 33 insertions(+), 10 deletions(-) diff --git a/plugins/rdp/rdp_plugin.c b/plugins/rdp/rdp_plugin.c index ca937adfc..9e5f80aa3 100644 --- a/plugins/rdp/rdp_plugin.c +++ b/plugins/rdp/rdp_plugin.c @@ -600,16 +600,27 @@ static BOOL remmina_rdp_post_connect(freerdp *instance) rf_register_graphics(instance->context->graphics); - if (rfi->bpp == 32) { - freerdp_local_color_format = PIXEL_FORMAT_BGRA32; - rfi->cairo_format = CAIRO_FORMAT_ARGB32; - } else if (rfi->bpp == 24) { - /* CAIRO_FORMAT_RGB24 is 32bit aligned, so we map it to libfreerdp’s PIXEL_FORMAT_BGRX32 */ - freerdp_local_color_format = PIXEL_FORMAT_BGRX32; - rfi->cairo_format = CAIRO_FORMAT_RGB24; - } else { - freerdp_local_color_format = PIXEL_FORMAT_RGB16; - rfi->cairo_format = CAIRO_FORMAT_RGB16_565; + REMMINA_PLUGIN_DEBUG("bpp: %d", rfi->bpp); + switch (rfi->bpp) { + case 24: + REMMINA_PLUGIN_DEBUG("CAIRO_FORMAT_RGB24"); + freerdp_local_color_format = PIXEL_FORMAT_BGRX32; + rfi->cairo_format = CAIRO_FORMAT_RGB24; + break; + case 32: + /** Do not use alpha as it's not used with the desktop + * CAIRO_FORMAT_ARGB32 + * See https://gitlab.com/Remmina/Remmina/-/issues/2456 + */ + REMMINA_PLUGIN_DEBUG("CAIRO_FORMAT_RGB24"); + freerdp_local_color_format = PIXEL_FORMAT_BGRA32; + rfi->cairo_format = CAIRO_FORMAT_RGB24; + break; + default: + REMMINA_PLUGIN_DEBUG("CAIRO_FORMAT_RGB16_565"); + freerdp_local_color_format = PIXEL_FORMAT_RGB16; + rfi->cairo_format = CAIRO_FORMAT_RGB16_565; + break; } if (!gdi_init(instance, freerdp_local_color_format)) { @@ -1216,6 +1227,7 @@ static gboolean remmina_rdp_main(RemminaProtocolWidget *gp) rfi->settings->ColorDepth = remmina_plugin_service->file_get_int(remminafile, "colordepth", 99); rfi->settings->SoftwareGdi = TRUE; + REMMINA_PLUGIN_DEBUG("gfx_h264_available: %d", gfx_h264_available); /* Avoid using H.264 modes if they are not available on libfreerdp */ if (!gfx_h264_available && (rfi->settings->ColorDepth == 65 || rfi->settings->ColorDepth == 66)) @@ -1260,6 +1272,15 @@ static gboolean remmina_rdp_main(RemminaProtocolWidget *gp) rfi->settings->GfxAVC444 = gfx_h264_available; } + if (rfi->settings->RemoteFxCodec || + rfi->settings->NSCodec || + rfi->settings->SupportGraphicsPipeline ) { + rfi->settings->FastPathOutput = TRUE; + rfi->settings->FrameMarkerCommandEnabled = TRUE; + rfi->settings->ColorDepth = 32; + rfi->bpp = 32; + } + rfi->settings->DesktopWidth = remmina_plugin_service->get_profile_remote_width(gp); rfi->settings->DesktopHeight = remmina_plugin_service->get_profile_remote_height(gp); @@ -2594,8 +2615,10 @@ G_MODULE_EXPORT gboolean remmina_plugin_entry(RemminaPluginService *service) if (buildconfig_strstr(freerdp_get_build_config(), "WITH_GFX_H264=ON")) { gfx_h264_available = TRUE; + REMMINA_PLUGIN_DEBUG("gfx_h264_available: %d", gfx_h264_available); } else { gfx_h264_available = FALSE; + REMMINA_PLUGIN_DEBUG("gfx_h264_available: %d", gfx_h264_available); /* Remove values 65 and 66 from colordepth_list array by shifting it */ gpointer *src, *dst; dst = src = colordepth_list; -- 2.32.0.rc2
OpenPGP_signature
Description: OpenPGP digital signature