[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