X-Git-Url: https://git.sesse.net/?p=rdpsrv;a=blobdiff_plain;f=rdp.c;h=db74a32c40336fbdd6e8cbe9e9f6f9f27db37931;hp=cd2f7c9d9b8e9a313798ebe3f23d05b12a23c711;hb=38804e804acfd31c44aae9877dd7fa1183e732d7;hpb=b004cd46005404ab5636a623db4704e76f23d0e8 diff --git a/rdp.c b/rdp.c index cd2f7c9..db74a32 100644 --- a/rdp.c +++ b/rdp.c @@ -148,38 +148,24 @@ rdp_in_unistr(STREAM s, char *string, int len) s->p += len; } -void rdp_send_bitmap_update(unsigned x, unsigned y) +void rdp_send_bitmap_update(unsigned x, unsigned y, unsigned width, unsigned height, unsigned char *data) { STREAM s; - s = rdp_init_data(11*2 + 2*2*3); + s = rdp_init_data(11*2 + width*height*3); out_uint16_le(s, RDP_UPDATE_BITMAP); out_uint16_le(s, 1); // one update out_uint16_le(s, x); // left, top, right, bottom out_uint16_le(s, y); - out_uint16_le(s, x+2); - out_uint16_le(s, y+2); - out_uint16_le(s, 2); // width, height - out_uint16_le(s, 2); + out_uint16_le(s, x+width); + out_uint16_le(s, y+height); + out_uint16_le(s, width); // width, height + out_uint16_le(s, height); out_uint16_le(s, 24); // bpp out_uint16_le(s, 0); // no compression - out_uint16_le(s, 2*2*3); // bufsize + out_uint16_le(s, width*height*3); // bufsize - out_uint8(s, 255); - out_uint8(s, 0); - out_uint8(s, 0); - - out_uint8(s, 0); - out_uint8(s, 255); - out_uint8(s, 0); - - out_uint8(s, 0); - out_uint8(s, 0); - out_uint8(s, 255); - - out_uint8(s, 255); - out_uint8(s, 255); - out_uint8(s, 255); + out_uint8p(s, data, width*height*3); s_mark_end(s); rdp_send_data(s, RDP_DATA_PDU_UPDATE);