diff options
author | Pierre Ossman <ossman@cendio.se> | 2011-10-11 14:29:51 +0000 |
---|---|---|
committer | Pierre Ossman <ossman@cendio.se> | 2011-10-11 14:29:51 +0000 |
commit | 76f7e8fc3f5115d35276444753d1f2b5df6e2104 (patch) | |
tree | 732b50622c02bf39b981d180648b9e0efaaf7514 /unix | |
parent | f4723ba7c22062e6b75905bc594fd431b746fb67 (diff) | |
download | tigervnc-76f7e8fc3f5115d35276444753d1f2b5df6e2104.tar.gz tigervnc-76f7e8fc3f5115d35276444753d1f2b5df6e2104.zip |
Avoid catching composite (RENDER) operations that only affect off-screen
things.
git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@4720 3789f03b-4d11-0410-bbf8-ca57d06f2519
Diffstat (limited to 'unix')
-rw-r--r-- | unix/xserver/hw/vnc/vncHooks.cc | 36 |
1 files changed, 20 insertions, 16 deletions
diff --git a/unix/xserver/hw/vnc/vncHooks.cc b/unix/xserver/hw/vnc/vncHooks.cc index 6364ab3e..6d903a46 100644 --- a/unix/xserver/hw/vnc/vncHooks.cc +++ b/unix/xserver/hw/vnc/vncHooks.cc @@ -554,23 +554,27 @@ void vncHooksComposite(CARD8 op, PicturePtr pSrc, PicturePtr pMask, { ScreenPtr pScreen = pDst->pDrawable->pScreen; vncHooksScreenPtr vncHooksScreen = vncHooksScreenPrivate(pScreen); - BoxRec box; PictureScreenPtr ps = GetPictureScreen(pScreen); - rfb::Rect rect1, rect2; - - rect1.setXYWH(pDst->pDrawable->x + xDst, - pDst->pDrawable->y + yDst, - width, - height); - - rect2 = rect1.intersect(vncHooksScreen->desktop->getRect()); - if (!rect2.is_empty()) { - box.x1 = rect2.tl.x; - box.y1 = rect2.tl.y; - box.x2 = rect2.br.x; - box.y2 = rect2.br.y; - RegionHelper changed(pScreen, &box, 0); - vncHooksScreen->desktop->add_changed(changed.reg); + + if (pDst->pDrawable->type == DRAWABLE_WINDOW && + ((WindowPtr) pDst->pDrawable)->viewable) { + BoxRec box; + rfb::Rect rect1, rect2; + + rect1.setXYWH(pDst->pDrawable->x + xDst, + pDst->pDrawable->y + yDst, + width, + height); + + rect2 = rect1.intersect(vncHooksScreen->desktop->getRect()); + if (!rect2.is_empty()) { + box.x1 = rect2.tl.x; + box.y1 = rect2.tl.y; + box.x2 = rect2.br.x; + box.y2 = rect2.br.y; + RegionHelper changed(pScreen, &box, 0); + vncHooksScreen->desktop->add_changed(changed.reg); + } } ps->Composite = vncHooksScreen->Composite; |