summaryrefslogtreecommitdiffstats
path: root/unix
diff options
context:
space:
mode:
authorPierre Ossman <ossman@cendio.se>2010-12-21 16:00:18 +0000
committerPierre Ossman <ossman@cendio.se>2010-12-21 16:00:18 +0000
commit329f7d5fac75f20852a5bbbb3a00d47115255b6d (patch)
tree3475cb7bbdd064f782b3fa09367f11a7d83b345f /unix
parent45de20d789350910cdd1b54a7c9493f953f23fc7 (diff)
downloadtigervnc-329f7d5fac75f20852a5bbbb3a00d47115255b6d.tar.gz
tigervnc-329f7d5fac75f20852a5bbbb3a00d47115255b6d.zip
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
Diffstat (limited to 'unix')
-rw-r--r--unix/xserver/hw/vnc/vncHooks.cc12
1 files changed, 8 insertions, 4 deletions
diff --git a/unix/xserver/hw/vnc/vncHooks.cc b/unix/xserver/hw/vnc/vncHooks.cc
index 3531ef26..2f7b4a23 100644
--- a/unix/xserver/hw/vnc/vncHooks.cc
+++ b/unix/xserver/hw/vnc/vncHooks.cc
@@ -397,12 +397,16 @@ static void vncHooksCopyWindow(WindowPtr pWin, DDXPointRec ptOldOrg,
{
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);