mirror of
https://github.com/FreeRDP/FreeRDP.git
synced 2025-06-03 00:00:20 +00:00
[server,shadow] do not fall back to surfacebits
If GFX channel is desired, do not fall back to surface bits command. This will break mstsc connections after a DesktopResize was sent.
This commit is contained in:
parent
e796508c1a
commit
340101e35e
@ -223,7 +223,7 @@ static BOOL shadow_client_context_new(freerdp_peer* peer, rdpContext* context)
|
|||||||
settings->DrawAllowSkipAlpha = TRUE;
|
settings->DrawAllowSkipAlpha = TRUE;
|
||||||
settings->DrawAllowColorSubsampling = TRUE;
|
settings->DrawAllowColorSubsampling = TRUE;
|
||||||
settings->DrawAllowDynamicColorFidelity = TRUE;
|
settings->DrawAllowDynamicColorFidelity = TRUE;
|
||||||
settings->CompressionLevel = PACKET_COMPR_TYPE_RDP6;
|
settings->CompressionLevel = PACKET_COMPR_TYPE_RDP8;
|
||||||
|
|
||||||
if (server->ipcSocket && (strncmp(bind_address, server->ipcSocket,
|
if (server->ipcSocket && (strncmp(bind_address, server->ipcSocket,
|
||||||
strnlen(bind_address, sizeof(bind_address))) != 0))
|
strnlen(bind_address, sizeof(bind_address))) != 0))
|
||||||
@ -1795,31 +1795,38 @@ static BOOL shadow_client_send_surface_update(rdpShadowClient* client, SHADOW_GF
|
|||||||
// PRId64 " height: %" PRId64 " right: %" PRId64 " bottom: %" PRId64, nXSrc, nYSrc, nWidth,
|
// PRId64 " height: %" PRId64 " right: %" PRId64 " bottom: %" PRId64, nXSrc, nYSrc, nWidth,
|
||||||
// nHeight, nXSrc + nWidth, nYSrc + nHeight);
|
// nHeight, nXSrc + nWidth, nYSrc + nHeight);
|
||||||
|
|
||||||
if (settings->SupportGraphicsPipeline && pStatus->gfxOpened)
|
if (settings->SupportGraphicsPipeline)
|
||||||
{
|
{
|
||||||
/* GFX/h264 always full screen encoded */
|
if (pStatus->gfxOpened)
|
||||||
nWidth = settings->DesktopWidth;
|
|
||||||
nHeight = settings->DesktopHeight;
|
|
||||||
|
|
||||||
/* Create primary surface if have not */
|
|
||||||
if (!pStatus->gfxSurfaceCreated)
|
|
||||||
{
|
{
|
||||||
/* Only init surface when we have h264 supported */
|
/* GFX/h264 always full screen encoded */
|
||||||
if (!(ret = shadow_client_rdpgfx_reset_graphic(client)))
|
nWidth = settings->DesktopWidth;
|
||||||
goto out;
|
nHeight = settings->DesktopHeight;
|
||||||
|
|
||||||
if (!(ret = shadow_client_rdpgfx_new_surface(client)))
|
/* Create primary surface if have not */
|
||||||
goto out;
|
if (!pStatus->gfxSurfaceCreated)
|
||||||
|
{
|
||||||
|
/* Only init surface when we have h264 supported */
|
||||||
|
if (!(ret = shadow_client_rdpgfx_reset_graphic(client)))
|
||||||
|
goto out;
|
||||||
|
|
||||||
pStatus->gfxSurfaceCreated = TRUE;
|
if (!(ret = shadow_client_rdpgfx_new_surface(client)))
|
||||||
|
goto out;
|
||||||
|
|
||||||
|
pStatus->gfxSurfaceCreated = TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
WINPR_ASSERT(nWidth >= 0);
|
||||||
|
WINPR_ASSERT(nWidth <= UINT16_MAX);
|
||||||
|
WINPR_ASSERT(nHeight >= 0);
|
||||||
|
WINPR_ASSERT(nHeight <= UINT16_MAX);
|
||||||
|
ret = shadow_client_send_surface_gfx(client, pSrcData, nSrcStep, SrcFormat, 0, 0,
|
||||||
|
(UINT16)nWidth, (UINT16)nHeight);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ret = TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
WINPR_ASSERT(nWidth >= 0);
|
|
||||||
WINPR_ASSERT(nWidth <= UINT16_MAX);
|
|
||||||
WINPR_ASSERT(nHeight >= 0);
|
|
||||||
WINPR_ASSERT(nHeight <= UINT16_MAX);
|
|
||||||
ret = shadow_client_send_surface_gfx(client, pSrcData, nSrcStep, SrcFormat, 0, 0,
|
|
||||||
(UINT16)nWidth, (UINT16)nHeight);
|
|
||||||
}
|
}
|
||||||
else if (settings->RemoteFxCodec || freerdp_settings_get_bool(settings, FreeRDP_NSCodec))
|
else if (settings->RemoteFxCodec || freerdp_settings_get_bool(settings, FreeRDP_NSCodec))
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user