libfreerdp-core/server: put RemoteFX captureFlags into settings needed by some thin clients.

This commit is contained in:
Vic Lee 2013-04-09 12:37:08 -07:00
parent c48a7bc5f1
commit 80229557b2
2 changed files with 18 additions and 1 deletions

View File

@ -689,6 +689,7 @@ typedef struct _RDPDR_PARALLEL RDPDR_PARALLEL;
#define FreeRDP_RemoteFxCodecId 3650
#define FreeRDP_RemoteFxCodecMode 3651
#define FreeRDP_RemoteFxImageCodec 3652
#define FreeRDP_RemoteFxCaptureFlags 3653
#define FreeRDP_NSCodec 3712
#define FreeRDP_NSCodecId 3713
#define FreeRDP_FrameAcknowledge 3714
@ -1155,7 +1156,8 @@ struct rdp_settings
ALIGN64 UINT32 RemoteFxCodecId; /* 3650 */
ALIGN64 UINT32 RemoteFxCodecMode; /* 3651 */
ALIGN64 BOOL RemoteFxImageCodec; /* 3652 */
UINT64 padding3712[3712 - 3653]; /* 3653 */
ALIGN64 UINT32 RemoteFxCaptureFlags; /* 3653 */
UINT64 padding3712[3712 - 3654]; /* 3654 */
/* NSCodec */
ALIGN64 BOOL NSCodec; /* 3712 */

View File

@ -2487,6 +2487,21 @@ BOOL rdp_read_bitmap_codecs_capability_set(wStream* s, UINT16 length, rdpSetting
if (remainingLength < codecPropertiesLength)
return FALSE;
if (settings->ServerMode)
{
if (UuidEqual(&codecGuid, &CODEC_GUID_REMOTEFX, &rpc_status))
{
stream_seek_UINT32(s); /* length */
stream_read_UINT32(s, settings->RemoteFxCaptureFlags); /* captureFlags */
stream_rewind(s, 8);
if (settings->RemoteFxCaptureFlags & CARDP_CAPS_CAPTURE_NON_CAC)
{
settings->RemoteFxOnly = TRUE;
}
}
}
stream_seek(s, codecPropertiesLength); /* codecProperties */
remainingLength -= codecPropertiesLength;