[PATCH v2 4/4] composite: Copy the window contents back from the pixmap

Ville Syrjälä ville.syrjala at nokia.com
Mon Dec 27 06:45:57 PST 2010


On Mon, Dec 27, 2010 at 02:40:14PM +0000, ext Daniel Stone wrote:
> Hi,
> 
> On Mon, Dec 27, 2010 at 03:24:13PM +0200, ville.syrjala at nokia.com wrote:
> > +void
> > +compRestoreWindow (WindowPtr pWin, PixmapPtr pPixmap)
> > +{
> > +    ScreenPtr pScreen = pWin->drawable.pScreen;
> > +    WindowPtr pParent = pWin->parent;
> > +
> > +    if (pParent->drawable.depth == pWin->drawable.depth) {
> > +	GCPtr pGC = GetScratchGC (pWin->drawable.depth, pScreen);
> > +	int bw = (int) pWin->borderWidth;
> > +	int x = bw;
> > +	int y = bw;
> > +	int w = pWin->drawable.width;
> > +	int h = pWin->drawable.height;
> > +
> > +	if (pGC) {
> > +	    ChangeGCVal val;
> > +	    val.val = IncludeInferiors;
> > +	    ChangeGC (NullClient, pGC, GCSubwindowMode, &val);
> > +	    ValidateGC(&pWin->drawable, pGC);
> > +	    (*pGC->ops->CopyArea) (&pPixmap->drawable,
> > +				   &pWin->drawable,
> > +				   pGC,
> > +				   x, y, w, h, 0, 0);
> > +	    FreeScratchGC (pGC);
> > +	}
> > +    }
> > +}
> 
> It might be nice to get the Render fallback path for non-matching depths
> here;

AFAICS that shouldn't be needed as unredirecting a non-matching depth
window would always result in an implicit redirection.

-- 
Ville Syrjälä


More information about the xorg-devel mailing list