diff options
author | Pierre Ossman <ossman@cendio.se> | 2010-12-21 16:00:18 +0000 |
---|---|---|
committer | Pierre Ossman <ossman@cendio.se> | 2010-12-21 16:00:18 +0000 |
commit | 329f7d5fac75f20852a5bbbb3a00d47115255b6d (patch) | |
tree | 3475cb7bbdd064f782b3fa09367f11a7d83b345f /unix | |
parent | 45de20d789350910cdd1b54a7c9493f953f23fc7 (diff) | |
download | tigervnc-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.cc | 12 |
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); |