allow updates from cached pixmap during local moves

This commit is contained in:
David Sundstrom 2011-12-09 14:25:56 -06:00
parent b17fe2e60e
commit 6bd2b736aa
3 changed files with 9 additions and 20 deletions

View File

@ -594,8 +594,9 @@ boolean xf_event_suppress_events(xfInfo *xfi, rdpWindow *window, XEvent*event)
break;
case VisibilityNotify:
case PropertyNotify:
case Expose:
// Allow these events to pass
return false;
break;
default:
// Eat any other events
return true;
@ -609,10 +610,9 @@ boolean xf_event_suppress_events(xfInfo *xfi, rdpWindow *window, XEvent*event)
case ConfigureNotify:
case VisibilityNotify:
case PropertyNotify:
case Expose:
// Keep us up to date on position
break;
case Expose:
return true;
default:
// Any other event terminates move
xf_rail_end_local_move(xfi, window);

View File

@ -63,17 +63,6 @@ void xf_rail_paint(xfInfo* xfi, rdpRail* rail, sint32 uleft, sint32 utop, uint32
if (intersect)
{
// Sometimes the RDP server and the local server
// are not synchronized for window position and size.
// This happens after a local move. In this case
// ignore the update because it will result in copying
// invalid data. Wait for the next update.
if ( xfw->left != window->windowOffsetX ||
xfw->top != window->windowOffsetY ||
xfw->width != window->windowWidth ||
xfw->height != window->windowHeight)
continue;
xf_UpdateWindowArea(xfi, xfw, ileft - wleft, itop - wtop, iwidth, iheight);
}
}

View File

@ -686,14 +686,14 @@ void xf_UpdateWindowArea(xfInfo* xfi, xfWindow* window, int x, int y, int width,
rdpWindow* wnd;
wnd = window->window;
ax = x + window->left;
ay = y + window->top;
ax = x + wnd->windowOffsetX;
ay = y + wnd->windowOffsetY;
if (ax + width >= window->right)
width = window->right - ax + 1;
if (ax + width > wnd->windowOffsetX + wnd->windowWidth)
width = (wnd->windowOffsetX + wnd->windowWidth - 1) - ax;
if (ay + height >= window->bottom)
height = window->bottom - ay + 1;
if (ay + height > wnd->windowOffsetY + wnd->windowHeight)
height = (wnd->windowOffsetY + wnd->windowHeight - 1) - ay;
if (xfi->sw_gdi)
{