]> source.dussan.org Git - tigervnc.git/commitdiff
Avoid catching composite (RENDER) operations that only affect off-screen
authorPierre Ossman <ossman@cendio.se>
Tue, 11 Oct 2011 14:29:51 +0000 (14:29 +0000)
committerPierre Ossman <ossman@cendio.se>
Tue, 11 Oct 2011 14:29:51 +0000 (14:29 +0000)
things.

git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@4720 3789f03b-4d11-0410-bbf8-ca57d06f2519

unix/xserver/hw/vnc/vncHooks.cc

index 6364ab3edb092e9b82bce6d2a2ee109daa4f8ddc..6d903a46e6266d49d4e12134333ac5d2f2d8084e 100644 (file)
@@ -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;