--- sourceforge.net/trunk/rdesktop/xwin.c 2004/02/14 23:20:24 606 +++ sourceforge.net/trunk/rdesktop/xwin.c 2004/02/16 20:28:09 609 @@ -21,6 +21,7 @@ #include #include #include +#include #include #include #include @@ -63,7 +64,7 @@ static int g_red_shift_l, g_blue_shift_l, g_green_shift_l; /* software backing store */ -static BOOL g_ownbackstore; +BOOL g_ownbackstore = True; /* We can't rely on external BackingStore */ static Pixmap g_backstore = 0; /* Moving in single app mode */ @@ -791,8 +792,11 @@ warning("Screen depth is 8 bits or lower: you may want to use -C for a private colourmap\n"); } - if (DoesBackingStore(g_screen) != Always) + if ((!g_ownbackstore) && (DoesBackingStore(g_screen) != Always)) + { + warning("External BackingStore not available, using internal\n"); g_ownbackstore = True; + } test = 1; g_host_be = !(BOOL) (*(uint8 *) (&test)); @@ -1779,9 +1783,15 @@ /* src */ int srcx, int srcy) { SET_FUNCTION(opcode); - XCopyArea(g_display, g_wnd, g_wnd, g_gc, srcx, srcy, cx, cy, x, y); if (g_ownbackstore) + { + XCopyArea(g_display, g_backstore, g_wnd, g_gc, srcx, srcy, cx, cy, x, y); XCopyArea(g_display, g_backstore, g_backstore, g_gc, srcx, srcy, cx, cy, x, y); + } + else + { + XCopyArea(g_display, g_wnd, g_wnd, g_gc, srcx, srcy, cx, cy, x, y); + } RESET_FUNCTION(opcode); }