Index: xc/ChangeLog =================================================================== RCS file: /cvs/xorg/xc/ChangeLog,v retrieving revision 1.788 diff -u -2 -0 -r1.788 ChangeLog --- xc/ChangeLog 2 Mar 2005 11:20:29 -0000 1.788 +++ xc/ChangeLog 2 Mar 2005 14:00:52 -0000 @@ -1,21 +1,32 @@ 2005-03-02 Roland Mainz + * xc/programs/Xserver/hw/xnest/Screen.c + * xc/programs/Xserver/hw/xnest/Window.c + * xc/programs/Xserver/hw/xnest/XNWindow.h + Bugzilla #2546 (https://bugs.freedesktop.org/show_bug.cgi?id=2546) + attachment #xxx (https://bugs.freedesktop.org/attachment.cgi?id=xxx): + Fix Xnest to update the shape regions in the backend server whenever + a client changes them in Xnest (the fix is to add a new wrapper which + calls |xnestShapeWindow()| before calling |miSetShape()|). + Patch by Mark McLoughlin + +2005-03-02 Roland Mainz * xc/config/cf/DragonFly.cf * xc/config/cf/Imake.cf * xc/config/cf/Imakefile * xc/config/imake/imake.c * xc/config/imake/imakemdep.h * xc/extras/drm/shared/drm.h * xc/include/Xos_r.h * xc/lib/xtrans/Xtranssock.c * xc/programs/Xserver/hw/xfree86/os-support/xf86_OSlib.h * xc/programs/Xserver/hw/xfree86/os-support/xf86_libc.h * xc/programs/Xserver/hw/xfree86/os-support/linux/lnx_agp.c * xc/programs/Xserver/hw/xfree86/os-support/linux/drm/xf86drmCompat.c Bugzilla #1712 (https://bugs.freedesktop.org/show_bug.cgi?id=1712) attachment #2004 (https://bugs.freedesktop.org/attachment.cgi?id=2004): Add support for DragonFly/BSD platform. Patch by Jeroen Ruigrok and Mike Verona . 2005-03-01 Alan Hourihane * xc/programs/Xserver/hw/xfree86/drivers/i810/i830_video.c Index: xc/programs/Xserver/hw/xnest/Screen.c =================================================================== RCS file: /cvs/xorg/xc/programs/Xserver/hw/xnest/Screen.c,v retrieving revision 1.4 diff -u -2 -0 -r1.4 Screen.c --- xc/programs/Xserver/hw/xnest/Screen.c 23 Feb 2005 19:17:10 -0000 1.4 +++ xc/programs/Xserver/hw/xnest/Screen.c 2 Mar 2005 14:01:10 -0000 @@ -344,40 +344,45 @@ pScreen->wakeupData = NULL; miPointerInitialize (pScreen, &xnestPointerSpriteFuncs, &xnestPointerCursorFuncs, True); pScreen->mmWidth = xnestWidth * DisplayWidthMM(xnestDisplay, DefaultScreen(xnestDisplay)) / DisplayWidth(xnestDisplay, DefaultScreen(xnestDisplay)); pScreen->mmHeight = xnestHeight * DisplayHeightMM(xnestDisplay, DefaultScreen(xnestDisplay)) / DisplayHeight(xnestDisplay, DefaultScreen(xnestDisplay)); /* overwrite miCloseScreen with our own */ pScreen->CloseScreen = xnestCloseScreen; if (!miScreenDevPrivateInit(pScreen, xnestWidth, NULL)) return FALSE; +#ifdef SHAPE + /* overwrite miSetShape with our own */ + pScreen->SetShape = xnestSetShape; +#endif /* SHAPE */ + /* devPrivates */ #define POSITION_OFFSET (pScreen->myNum * (xnestWidth + xnestHeight) / 32) if (xnestDoFullGeneration) { valuemask = CWBackPixel | CWEventMask | CWColormap; attributes.background_pixel = xnestWhitePixel; attributes.event_mask = xnestEventMask; attributes.colormap = xnestDefaultVisualColormap(xnestDefaultVisual(pScreen)); if (xnestParentWindow != 0) { xnestDefaultWindows[pScreen->myNum] = xnestParentWindow; XSelectInput (xnestDisplay, xnestDefaultWindows[pScreen->myNum], xnestEventMask); } else xnestDefaultWindows[pScreen->myNum] = XCreateWindow(xnestDisplay, DefaultRootWindow(xnestDisplay), xnestX + POSITION_OFFSET, Index: xc/programs/Xserver/hw/xnest/Window.c =================================================================== RCS file: /cvs/xorg/xc/programs/Xserver/hw/xnest/Window.c,v retrieving revision 1.2 diff -u -2 -0 -r1.2 Window.c --- xc/programs/Xserver/hw/xnest/Window.c 23 Apr 2004 19:54:21 -0000 1.2 +++ xc/programs/Xserver/hw/xnest/Window.c 2 Mar 2005 14:01:10 -0000 @@ -432,40 +432,47 @@ window = xnestWindow(pWin); while (XCheckIfEvent(xnestDisplay, &event, xnestWindowExposurePredicate, (char *)&window)) { Box.x1 = pWin->drawable.x + wBorderWidth(pWin) + event.xexpose.x; Box.y1 = pWin->drawable.y + wBorderWidth(pWin) + event.xexpose.y; Box.x2 = Box.x1 + event.xexpose.width; Box.y2 = Box.y1 + event.xexpose.height; event.xexpose.type = ProcessedExpose; if (RECT_IN_REGION(pWin->drawable.pScreen, pRgn, &Box) != rgnIN) XPutBackEvent(xnestDisplay, &event); } miWindowExposures(pWin, pRgn, other_exposed); } #ifdef SHAPE +void +xnestSetShape(WindowPtr pWin) +{ + xnestShapeWindow(pWin); + miSetShape(pWin); +} + static Bool xnestRegionEqual(RegionPtr pReg1, RegionPtr pReg2) { BoxPtr pBox1, pBox2; unsigned int n1, n2; if (pReg1 == pReg2) return True; if (pReg1 == NullRegion || pReg2 == NullRegion) return False; pBox1 = REGION_RECTS(pReg1); n1 = REGION_NUM_RECTS(pReg1); pBox2 = REGION_RECTS(pReg2); n2 = REGION_NUM_RECTS(pReg2); if (n1 != n2) return False; if (pBox1 == pBox2) return True; Index: xc/programs/Xserver/hw/xnest/XNWindow.h =================================================================== RCS file: /cvs/xorg/xc/programs/Xserver/hw/xnest/XNWindow.h,v retrieving revision 1.2 diff -u -2 -0 -r1.2 XNWindow.h --- xc/programs/Xserver/hw/xnest/XNWindow.h 23 Apr 2004 19:54:21 -0000 1.2 +++ xc/programs/Xserver/hw/xnest/XNWindow.h 2 Mar 2005 14:01:10 -0000 @@ -56,24 +56,25 @@ ((pWin)->nextSib ? xnestWindow((pWin)->nextSib) : None) #define CWParent CWSibling #define CWStackingOrder CWStackMode WindowPtr xnestWindowPtr(Window window); Bool xnestCreateWindow(WindowPtr pWin); Bool xnestDestroyWindow(WindowPtr pWin); Bool xnestPositionWindow(WindowPtr pWin, int x, int y); void xnestConfigureWindow(WindowPtr pWin, unsigned int mask); Bool xnestChangeWindowAttributes(WindowPtr pWin, unsigned long mask); Bool xnestRealizeWindow(WindowPtr pWin); Bool xnestUnrealizeWindow(WindowPtr pWin); void xnestPaintWindowBackground(WindowPtr pWin, RegionPtr pRegion, int what); void xnestPaintWindowBorder(WindowPtr pWin, RegionPtr pRegion, int what); void xnestCopyWindow(WindowPtr pWin, xPoint oldOrigin, RegionPtr oldRegion); void xnestClipNotify(WindowPtr pWin, int dx, int dy); void xnestWindowExposures(WindowPtr pWin, RegionPtr pRgn, RegionPtr other_exposed); #ifdef SHAPE +void xnestSetShape(WindowPtr pWin); void xnestShapeWindow(WindowPtr pWin); #endif /* SHAPE */ #endif /* XNESTWINDOW_H */