--- sourceforge.net/trunk/rdesktop/orders.c 2001/09/14 13:51:38 30 +++ sourceforge.net/trunk/rdesktop/orders.c 2002/07/12 03:45:20 55 @@ -61,7 +61,7 @@ if (delta) { in_uint8(s, change); - *coord += (char) change; + *coord += (signed char) change; } else { @@ -476,6 +476,7 @@ int x, y, xfrom, yfrom; uint8 flags = 0; PEN pen; + uint8 opcode; if (present & 0x01) rdp_in_coord(s, &os->x, delta); @@ -497,6 +498,10 @@ in_uint8(s, os->datasize); in_uint8a(s, os->data, os->datasize); } + if (os->flags & 1) + opcode = ROP2_COPY; + else + opcode = ROP2_NXOR; DEBUG(("POLYLINE(x=%d,y=%d,fl=0x%x,fg=0x%x,n=%d,sz=%d)\n", os->x, os->y, os->flags, os->fgcolour, os->lines, os->datasize)); @@ -532,7 +537,7 @@ if (flags & 0x80) y += parse_delta(os->data, &data); - ui_line(ROP2_NXOR, xfrom, yfrom, x, y, &pen); + ui_line(opcode, xfrom, yfrom, x, y, &pen); flags <<= 2; } @@ -542,7 +547,6 @@ static void process_text2(STREAM s, TEXT2_ORDER *os, uint32 present, BOOL delta) { - DATABLOB *entry; int i; if (present & 0x000001) @@ -612,24 +616,6 @@ DEBUG(("\n")); - /* Process special cache strings */ - if ((os->length >= 2) && (os->text[0] == 0xfe)) - { - entry = cache_get_text(os->text[1]); - - if (entry == NULL) - return; - - memcpy(os->text, entry->data, entry->size); - os->length = entry->size; - } - else if ((os->length >= 3) && (os->text[os->length - 3] == 0xff)) - { - os->length -= 3; - cache_put_text(os->text[os->length + 1], os->text, - os->length); - } - ui_draw_text(os->font, os->flags, os->mixmode, os->x, os->y, os->clipleft, os->cliptop, os->clipright - os->clipleft,