Clean up CopyWindow hook so it's more readable.
git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@4228 3789f03b-4d11-0410-bbf8-ca57d06f2519
diff --git a/unix/xserver/hw/vnc/vncHooks.cc b/unix/xserver/hw/vnc/vncHooks.cc
index 3531ef2..2f7b4a2 100644
--- a/unix/xserver/hw/vnc/vncHooks.cc
+++ b/unix/xserver/hw/vnc/vncHooks.cc
@@ -397,12 +397,16 @@
{
SCREEN_UNWRAP(pWin->drawable.pScreen, CopyWindow);
+ int dx, dy;
RegionHelper copied(pScreen, pOldRegion);
- int dx = pWin->drawable.x - ptOldOrg.x;
- int dy = pWin->drawable.y - ptOldOrg.y;
+
+ dx = pWin->drawable.x - ptOldOrg.x;
+ dy = pWin->drawable.y - ptOldOrg.y;
+
+ // RFB tracks copies in terms of destination rectangle, not source.
+ // We also need to copy with changes to the Window's clipping region.
REGION_TRANSLATE(pScreen, copied.reg, dx, dy);
- REGION_INTERSECT(pWin->drawable.pScreen, copied.reg, copied.reg,
- &pWin->borderClip);
+ REGION_INTERSECT(pScreen, copied.reg, copied.reg, &pWin->borderClip);
(*pScreen->CopyWindow) (pWin, ptOldOrg, pOldRegion);