{
settings->rfx_codec = false;
settings->ns_codec = false;
+ settings->jpeg_codec = false;
}
while (bitmapCodecCount > 0)
stream_read_uint8(s, settings->rfx_codec_id);
settings->rfx_codec = true;
}
- else if (settings->server_mode && strncmp((char*)stream_get_tail(s),CODEC_GUID_NSCODEC, 16) == 0)
+ else if (settings->server_mode && strncmp((char*)stream_get_tail(s), CODEC_GUID_NSCODEC, 16) == 0)
{
stream_seek(s, 16); /*codec GUID (16 bytes) */
stream_read_uint8(s, settings->ns_codec_id);
stream_write_uint32(s, 0); /* reserved */
}
-
/**
* Write bitmap codecs capability set.\n
* @msdn{dd891377}
header = rdp_capability_set_start(s);
bitmapCodecCount = 0;
+
if (settings->rfx_codec)
bitmapCodecCount++;
if (settings->ns_codec)
boolean update_read_refresh_rect(rdpUpdate* update, STREAM* s)
{
+ int index;
uint8 numberOfAreas;
+ RECTANGLE_16* areas;
if (stream_get_left(s) < 4)
return false;
stream_read_uint8(s, numberOfAreas);
stream_seek(s, 3); /* pad3Octects */
- if (stream_get_left(s) < numberOfAreas * 8)
- return false;
- IFCALL(update->RefreshRect, update->context, numberOfAreas, (RECTANGLE_16*) stream_get_tail(s));
+ areas = (RECTANGLE_16*) malloc(sizeof(RECTANGLE_16) * numberOfAreas);
+
+ for (index = 0; index < numberOfAreas; index++)
+ {
+ stream_read_uint16(s, areas[index].left);
+ stream_read_uint16(s, areas[index].top);
+ stream_read_uint16(s, areas[index].right);
+ stream_read_uint16(s, areas[index].bottom);
+ }
+
+ IFCALL(update->RefreshRect, update->context, numberOfAreas, areas);
+
+ free(areas);
return true;
}
DWORD nCount;\r
DWORD status;\r
HANDLE handles[32];\r
+ rdpSettings* settings;\r
wfPeerContext* context;\r
freerdp_peer* client = (freerdp_peer*) lpParam;\r
\r
wf_peer_init(client);\r
\r
+ settings = client->settings;\r
+ settings->rfx_codec = true;\r
+ settings->ns_codec = false;\r
+ settings->jpeg_codec = false;\r
wf_peer_read_settings(client);\r
\r
client->PostConnect = wf_peer_post_connect;\r