rdpUpdate: add autoCalculateBitmapData flag

This commit is contained in:
kubistika 2019-06-04 17:33:18 +03:00
parent 4a6b843f16
commit 99b10aa98d
2 changed files with 18 additions and 9 deletions

View File

@ -253,6 +253,11 @@ struct rdp_update
rdpBounds currentBounds; rdpBounds currentBounds;
rdpBounds previousBounds; rdpBounds previousBounds;
CRITICAL_SECTION mux; CRITICAL_SECTION mux;
/* if autoCalculateBitmapData is set to TRUE, the server automatically
* fills BITMAP_DATA struct members: flags, cbCompMainBodySize and cbCompFirstRowSize.
*/
BOOL autoCalculateBitmapData;
}; };
#endif /* FREERDP_UPDATE_H */ #endif /* FREERDP_UPDATE_H */

View File

@ -148,16 +148,19 @@ static BOOL update_write_bitmap_data(rdpUpdate* update, wStream* s,
if (!Stream_EnsureRemainingCapacity(s, 64 + bitmapData->bitmapLength)) if (!Stream_EnsureRemainingCapacity(s, 64 + bitmapData->bitmapLength))
return FALSE; return FALSE;
bitmapData->flags = 0; if (update->autoCalculateBitmapData)
bitmapData->cbCompFirstRowSize = 0;
if (bitmapData->compressed)
bitmapData->flags |= BITMAP_COMPRESSION;
if (update->context->settings->NoBitmapCompressionHeader)
{ {
bitmapData->flags |= NO_BITMAP_COMPRESSION_HDR; bitmapData->flags = 0;
bitmapData->cbCompMainBodySize = bitmapData->bitmapLength; bitmapData->cbCompFirstRowSize = 0;
if (bitmapData->compressed)
bitmapData->flags |= BITMAP_COMPRESSION;
if (update->context->settings->NoBitmapCompressionHeader)
{
bitmapData->flags |= NO_BITMAP_COMPRESSION_HDR;
bitmapData->cbCompMainBodySize = bitmapData->bitmapLength;
}
} }
Stream_Write_UINT16(s, bitmapData->destLeft); Stream_Write_UINT16(s, bitmapData->destLeft);
@ -2190,6 +2193,7 @@ rdpUpdate* update_new(rdpRdp* rdp)
deleteList->cIndices = 0; deleteList->cIndices = 0;
update->SuppressOutput = update_send_suppress_output; update->SuppressOutput = update_send_suppress_output;
update->initialState = TRUE; update->initialState = TRUE;
update->autoCalculateBitmapData = TRUE;
update->queue = MessageQueue_New(&cb); update->queue = MessageQueue_New(&cb);
if (!update->queue) if (!update->queue)