From: Steinar H. Gunderson Date: Sun, 6 Feb 2005 15:00:10 +0000 (+0000) Subject: Reduce small block size to 32x32, and parametrize (#defines instead of hardcoding) X-Git-Url: https://git.sesse.net/?p=rdpsrv;a=commitdiff_plain Reduce small block size to 32x32, and parametrize (#defines instead of hardcoding) --- diff --git a/rdpsrv.c b/rdpsrv.c index f8ef8f2..cee8d77 100644 --- a/rdpsrv.c +++ b/rdpsrv.c @@ -289,13 +289,16 @@ struct vnc_rectangle { unsigned int encoding; }; +#define SBX 32 +#define SBY 32 + void handle_vnc_fbupdate(int vnc_sock) { struct vnc_rectangle rect; unsigned char *data, *ptr, *src, *dst; unsigned short num_rect; int ret, data_left, i, xt, yt; - unsigned char smallblock[64 * 64 * 3]; + unsigned char smallblock[SBX * SBY * 3]; if (read(vnc_sock, &num_rect, 2) != 2) error("short read on num_rect\n"); @@ -330,19 +333,19 @@ void handle_vnc_fbupdate(int vnc_sock) // push our 32-bit RGB data into small enough chunks // (64x64) so we are sure we can send them without // everything crashing and stuff :-) - for (yt = 0; yt < (height + 63) / 64; ++yt) { - for (xt = 0; xt < (width + 63) / 64; ++xt) { + for (yt = 0; yt < (height + (SBY-1)) / SBY; ++yt) { + for (xt = 0; xt < (width + (SBX-1)) / SBX; ++xt) { int x, y; - int bw = width - xt * 64; - int bh = height - yt * 64; - if (bw > 64) - bw = 64; - if (bh > 64) - bh = 64; + int bw = width - xt * SBX; + int bh = height - yt * SBY; + if (bw > SBX) + bw = SBX; + if (bh > SBY) + bh = SBY; dst = smallblock; for (y = 0; y < bh; ++y) { - src = data + ((yt * 64 + (bh - 1 - y)) * width + (xt * 64)) * 4; + src = data + ((yt * SBY + (bh - 1 - y)) * width + (xt * SBX)) * 4; for (x = 0; x < bw; ++x) { *dst++ = *src++; *dst++ = *src++; @@ -351,7 +354,7 @@ void handle_vnc_fbupdate(int vnc_sock) } } - rdp_send_bitmap_update(ntohs(rect.x) + xt * 64, ntohs(rect.y) + yt * 64, bw, bh, smallblock); + rdp_send_bitmap_update(ntohs(rect.x) + xt * SBX, ntohs(rect.y) + yt * SBY, bw, bh, smallblock); } }