a few fixes for PBC from Jeroen

git-svn-id: svn://svn.code.sf.net/p/rdesktop/code/trunk/rdesktop@729 423420c4-83ab-492f-b58f-81f9feb106b5
This commit is contained in:
Jay Sorg 2004-06-29 16:22:41 +00:00
parent 589e0cbd87
commit e2e2ff88aa
3 changed files with 14 additions and 2 deletions

12
cache.c
View File

@ -32,6 +32,7 @@ int g_num_bitmaps_in_memory[3];
/* BITMAP CACHE */ /* BITMAP CACHE */
static BMPCACHEENTRY g_bmpcache[3][0xa00]; static BMPCACHEENTRY g_bmpcache[3][0xa00];
static HBITMAP g_volatile_bc[3];
/* Remove the least-recently used bitmap from the cache */ /* Remove the least-recently used bitmap from the cache */
void void
@ -75,6 +76,10 @@ cache_get_bitmap(uint8 cache_id, uint16 cache_idx)
return *pbitmap; return *pbitmap;
} }
} }
else if ((cache_id < NUM_ELEMENTS(g_volatile_bc)) && (cache_idx == 0x7fff))
{
return g_volatile_bc[cache_id];
}
error("get bitmap %d:%d\n", cache_id, cache_idx); error("get bitmap %d:%d\n", cache_id, cache_idx);
return NULL; return NULL;
@ -102,6 +107,13 @@ cache_put_bitmap(uint8 cache_id, uint16 cache_idx, HBITMAP bitmap, uint32 stamp)
g_bmpcache[cache_id][cache_idx].bitmap = bitmap; g_bmpcache[cache_id][cache_idx].bitmap = bitmap;
g_bmpcache[cache_id][cache_idx].usage = stamp; g_bmpcache[cache_id][cache_idx].usage = stamp;
} }
else if ((cache_id < NUM_ELEMENTS(g_volatile_bc)) && (cache_idx == 0x7fff))
{
old = g_volatile_bc[cache_id];
if (old != NULL)
ui_destroy_bitmap(old);
g_volatile_bc[cache_id] = bitmap;
}
else else
{ {
error("put bitmap %d:%d\n", cache_id, cache_idx); error("put bitmap %d:%d\n", cache_id, cache_idx);

View File

@ -720,8 +720,8 @@ main(int argc, char *argv[])
} }
DEBUG(("Disconnecting...\n")); DEBUG(("Disconnecting...\n"));
cache_save_state();
rdp_disconnect(); rdp_disconnect();
cache_save_state();
ui_deinit(); ui_deinit();
if (ext_disc_reason >= 2) if (ext_disc_reason >= 2)

2
rdp.c
View File

@ -539,7 +539,7 @@ rdp_out_bmpcache2_caps(STREAM s)
out_uint16_le(s, RDP_CAPSET_BMPCACHE2); out_uint16_le(s, RDP_CAPSET_BMPCACHE2);
out_uint16_le(s, RDP_CAPLEN_BMPCACHE2); out_uint16_le(s, RDP_CAPLEN_BMPCACHE2);
out_uint16_le(s, g_bitmap_cache_persist_enable ? 1 : 0); /* version */ out_uint16_le(s, g_bitmap_cache_persist_enable ? 2 : 0); /* version */
out_uint16_le(s, 0x0300); /* flags? number of caches? */ out_uint16_le(s, 0x0300); /* flags? number of caches? */