summaryrefslogtreecommitdiffstats
path: root/unix
diff options
context:
space:
mode:
authorPierre Ossman <ossman@cendio.se>2011-10-11 14:29:51 +0000
committerPierre Ossman <ossman@cendio.se>2011-10-11 14:29:51 +0000
commit76f7e8fc3f5115d35276444753d1f2b5df6e2104 (patch)
tree732b50622c02bf39b981d180648b9e0efaaf7514 /unix
parentf4723ba7c22062e6b75905bc594fd431b746fb67 (diff)
downloadtigervnc-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.cc36
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;