--- sourceforge.net/trunk/rdesktop/rdp.c 2005/03/06 21:11:18 828 +++ sourceforge.net/trunk/rdesktop/rdp.c 2005/03/08 00:43:10 831 @@ -386,22 +386,22 @@ rdp_enum_bmpcache2(void) { STREAM s; - uint8 idlist[BMPCACHE2_NUM_PSTCELLS * sizeof(BITMAP_ID)]; - uint32 nids, offset, count, flags; + HASH_KEY keylist[BMPCACHE2_NUM_PSTCELLS]; + uint32 num_keys, offset, count, flags; offset = 0; - nids = pstcache_enumerate(2, idlist); + num_keys = pstcache_enumerate(2, keylist); - while (offset < nids) + while (offset < num_keys) { - count = MIN(nids - offset, 169); + count = MIN(num_keys - offset, 169); - s = rdp_init_data(24 + count * sizeof(BITMAP_ID)); + s = rdp_init_data(24 + count * sizeof(HASH_KEY)); flags = 0; if (offset == 0) flags |= PDU_FLAG_FIRST; - if (nids - offset <= 169) + if (num_keys - offset <= 169) flags |= PDU_FLAG_LAST; /* header */ @@ -411,12 +411,12 @@ out_uint16_le(s, 0); out_uint16_le(s, 0); out_uint16_le(s, 0); - out_uint16_le(s, nids); + out_uint16_le(s, num_keys); out_uint32_le(s, 0); out_uint32_le(s, flags); /* list */ - out_uint8a(s, idlist + offset * sizeof(BITMAP_ID), count * sizeof(BITMAP_ID)); + out_uint8a(s, keylist[offset], count * sizeof(HASH_KEY)); s_mark_end(s); rdp_send_data(s, 0x2b); @@ -495,19 +495,23 @@ { uint8 order_caps[32]; - memset(order_caps, 0, 32); order_caps[0] = 1; /* dest blt */ order_caps[1] = 1; /* pat blt */ order_caps[2] = 1; /* screen blt */ order_caps[3] = (g_bitmap_cache ? 1 : 0); /* memblt */ + order_caps[4] = 0; /* triblt */ order_caps[8] = 1; /* line */ order_caps[9] = 1; /* line */ order_caps[10] = 1; /* rect */ order_caps[11] = (g_desktop_save == False ? 0 : 1); /* desksave */ order_caps[13] = 1; /* memblt */ order_caps[14] = 1; /* triblt */ + order_caps[20] = 1; /* polygon */ + order_caps[21] = 1; /* polygon2 */ order_caps[22] = 1; /* polyline */ + order_caps[25] = 1; /* ellipse */ + order_caps[26] = 1; /* ellipse2 */ order_caps[27] = 1; /* text2 */ out_uint16_le(s, RDP_CAPSET_ORDER); out_uint16_le(s, RDP_CAPLEN_ORDER);