Fix for bad colours on ARM (found by Ken Gordon) - we can't assume that
the representation of a COLOURENTRY array is the same as on the wire. Copy method of process_colcache to process_palette. git-svn-id: svn://svn.code.sf.net/p/rdesktop/code/trunk/rdesktop@253 423420c4-83ab-492f-b58f-81f9feb106b5
This commit is contained in:
parent
c96a91367d
commit
280a1d5289
19
rdp.c
19
rdp.c
@ -601,18 +601,29 @@ process_bitmap_updates(STREAM s)
|
|||||||
static void
|
static void
|
||||||
process_palette(STREAM s)
|
process_palette(STREAM s)
|
||||||
{
|
{
|
||||||
HCOLOURMAP hmap;
|
COLOURENTRY *entry;
|
||||||
COLOURMAP map;
|
COLOURMAP map;
|
||||||
uint8 *colours;
|
HCOLOURMAP hmap;
|
||||||
|
int i;
|
||||||
|
|
||||||
in_uint8s(s, 2); /* pad */
|
in_uint8s(s, 2); /* pad */
|
||||||
in_uint16_le(s, map.ncolours);
|
in_uint16_le(s, map.ncolours);
|
||||||
in_uint8s(s, 2); /* pad */
|
in_uint8s(s, 2); /* pad */
|
||||||
in_uint8p(s, colours, (map.ncolours * 3));
|
|
||||||
map.colours = (COLOURENTRY *) colours;
|
map.colours = xmalloc(3 * map.ncolours);
|
||||||
|
|
||||||
|
for (i = 0; i < map.ncolours; i++)
|
||||||
|
{
|
||||||
|
entry = &map.colours[i];
|
||||||
|
in_uint8(s, entry->red);
|
||||||
|
in_uint8(s, entry->green);
|
||||||
|
in_uint8(s, entry->blue);
|
||||||
|
}
|
||||||
|
|
||||||
hmap = ui_create_colourmap(&map);
|
hmap = ui_create_colourmap(&map);
|
||||||
ui_set_colourmap(hmap);
|
ui_set_colourmap(hmap);
|
||||||
|
|
||||||
|
xfree(map.colours);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Process an update PDU */
|
/* Process an update PDU */
|
||||||
|
Loading…
Reference in New Issue
Block a user