diff options
Diffstat (limited to 'libxrdp/libxrdp.c')
| -rw-r--r-- | libxrdp/libxrdp.c | 31 |
1 files changed, 11 insertions, 20 deletions
diff --git a/libxrdp/libxrdp.c b/libxrdp/libxrdp.c index dbffcd58..ba2b04c6 100644 --- a/libxrdp/libxrdp.c +++ b/libxrdp/libxrdp.c @@ -601,6 +601,14 @@ libxrdp_send_bitmap(struct xrdp_session *session, int width, int height, switch (bpp) { + case 8: + for (j = 0; j < lines_sending; j++) + { + q = q - line_bytes; + out_uint8a(s, q, line_bytes); + out_uint8s(s, e); + } + break; case 15: case 16: for (j = 0; j < lines_sending; j++) @@ -611,10 +619,7 @@ libxrdp_send_bitmap(struct xrdp_session *session, int width, int height, pixel = *((tui16*)(q + k * 2)); out_uint16_le(s, pixel); } - for (k = 0; k < e; k++) - { - out_uint8s(s, 2); - } + out_uint8s(s, e * 2); } break; case 24: @@ -628,10 +633,7 @@ libxrdp_send_bitmap(struct xrdp_session *session, int width, int height, out_uint8(s, pixel >> 8); out_uint8(s, pixel >> 16); } - for (k = 0; k < e; k++) - { - out_uint8s(s, 3); - } + out_uint8s(s, e * 3); } break; case 32: @@ -643,18 +645,7 @@ libxrdp_send_bitmap(struct xrdp_session *session, int width, int height, pixel = *((int*)(q + k * 4)); out_uint32_le(s, pixel); } - for (k = 0; k < e; k++) - { - out_uint8s(s, 4); - } - } - break; - default: /* 8 bpp */ - for (j = 0; j < lines_sending; j++) - { - q = q - line_bytes; - out_uint8a(s, q, line_bytes); - out_uint8s(s, e * Bpp); + out_uint8s(s, e * 4); } break; } |
