diff --git a/unix/xserver/hw/vnc/vncHooks.c b/unix/xserver/hw/vnc/vncHooks.c index f3c2520..185b0a5 100644 --- a/unix/xserver/hw/vnc/vncHooks.c +++ b/unix/xserver/hw/vnc/vncHooks.c @@ -388,6 +388,8 @@ static inline void add_changed(ScreenPtr pScreen, RegionPtr reg) vncHooksScreenPtr vncHooksScreen = vncHooksScreenPrivate(pScreen); if (vncHooksScreen->ignoreHooks) return; + if (REGION_NIL(reg)) + return; vncAddChanged(pScreen->myNum, (const struct UpdateRect*)REGION_EXTENTS(pScreen, reg), REGION_NUM_RECTS(reg), @@ -400,6 +402,8 @@ static inline void add_copied(ScreenPtr pScreen, RegionPtr dst, vncHooksScreenPtr vncHooksScreen = vncHooksScreenPrivate(pScreen); if (vncHooksScreen->ignoreHooks) return; + if (REGION_NIL(dst)) + return; vncAddCopied(pScreen->myNum, (const struct UpdateRect*)REGION_EXTENTS(pScreen, dst), REGION_NUM_RECTS(dst), @@ -562,8 +566,7 @@ static void vncHooksCopyWindow(WindowPtr pWin, DDXPointRec ptOldOrg, (*pScreen->CopyWindow) (pWin, ptOldOrg, pOldRegion); - if (REGION_NOTEMPTY(pScreen, &copied)) - add_copied(pScreen, &copied, dx, dy); + add_copied(pScreen, &copied, dx, dy); REGION_UNINIT(pScreen, &copied); REGION_UNINIT(pScreen, &screen_rgn); @@ -807,8 +810,7 @@ static void vncHooksComposite(CARD8 op, PicturePtr pSrc, PicturePtr pMask, (*ps->Composite)(op, pSrc, pMask, pDst, xSrc, ySrc, xMask, yMask, xDst, yDst, width, height); - if (REGION_NOTEMPTY(pScreen, &changed)) - add_changed(pScreen, &changed); + add_changed(pScreen, &changed); REGION_UNINIT(pScreen, &changed); @@ -896,8 +898,7 @@ static void vncHooksGlyphs(CARD8 op, PicturePtr pSrc, PicturePtr pDst, (*ps->Glyphs)(op, pSrc, pDst, maskFormat, xSrc, ySrc, nlists, lists, glyphs); - if (REGION_NOTEMPTY(pScreen, changed)) - add_changed(pScreen, changed); + add_changed(pScreen, changed); REGION_DESTROY(pScreen, changed); @@ -919,8 +920,7 @@ static void vncHooksCompositeRects(CARD8 op, PicturePtr pDst, (*ps->CompositeRects)(op, pDst, color, nRect, rects); - if (REGION_NOTEMPTY(pScreen, changed)) - add_changed(pScreen, changed); + add_changed(pScreen, changed); REGION_DESTROY(pScreen, changed); @@ -987,8 +987,7 @@ static void vncHooksTrapezoids(CARD8 op, PicturePtr pSrc, PicturePtr pDst, (*ps->Trapezoids)(op, pSrc, pDst, maskFormat, xSrc, ySrc, ntrap, traps); - if (REGION_NOTEMPTY(pScreen, &changed)) - add_changed(pScreen, &changed); + add_changed(pScreen, &changed); REGION_UNINIT(pScreen, &changed); @@ -1053,8 +1052,7 @@ static void vncHooksTriangles(CARD8 op, PicturePtr pSrc, PicturePtr pDst, (*ps->Triangles)(op, pSrc, pDst, maskFormat, xSrc, ySrc, ntri, tris); - if (REGION_NOTEMPTY(pScreen, &changed)) - add_changed(pScreen, &changed); + add_changed(pScreen, &changed); REGION_UNINIT(pScreen, &changed); @@ -1114,8 +1112,7 @@ static void vncHooksTriStrip(CARD8 op, PicturePtr pSrc, PicturePtr pDst, (*ps->TriStrip)(op, pSrc, pDst, maskFormat, xSrc, ySrc, npoint, points); - if (REGION_NOTEMPTY(pScreen, &changed)) - add_changed(pScreen, &changed); + add_changed(pScreen, &changed); REGION_UNINIT(pScreen, &changed); @@ -1173,8 +1170,7 @@ static void vncHooksTriFan(CARD8 op, PicturePtr pSrc, PicturePtr pDst, (*ps->TriFan)(op, pSrc, pDst, maskFormat, xSrc, ySrc, npoint, points); - if (REGION_NOTEMPTY(pScreen, &changed)) - add_changed(pScreen, &changed); + add_changed(pScreen, &changed); REGION_UNINIT(pScreen, &changed); @@ -1495,13 +1491,11 @@ static RegionPtr vncHooksCopyArea(DrawablePtr pSrc, DrawablePtr pDst, ret = (*pGC->ops->CopyArea) (pSrc, pDst, pGC, srcx, srcy, w, h, dstx, dsty); - if (REGION_NOTEMPTY(pScreen, &dst)) - add_copied(pGC->pScreen, &dst, - dstx + pDst->x - srcx - pSrc->x, - dsty + pDst->y - srcy - pSrc->y); + add_copied(pGC->pScreen, &dst, + dstx + pDst->x - srcx - pSrc->x, + dsty + pDst->y - srcy - pSrc->y); - if (REGION_NOTEMPTY(pScreen, &changed)) - add_changed(pGC->pScreen, &changed); + add_changed(pGC->pScreen, &changed); REGION_UNINIT(pGC->pScreen, &dst); REGION_UNINIT(pGC->pScreen, &src);