mirror of https://github.com/FreeRDP/FreeRDP
allow updates from cached pixmap during local moves
This commit is contained in:
parent
b17fe2e60e
commit
6bd2b736aa
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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)
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue