On Thu, Dec 3, 2015 at 3:04 AM, Michel Dänzer <[email protected]> wrote: > From: Michel Dänzer <[email protected]> > > This makes sure that the destination pixmap contents will be fully > initialized. Without this, a PRIME output starts out with garbage. > > Signed-off-by: Michel Dänzer <[email protected]>
Reviewed-by: Alex Deucher <[email protected]> > --- > dix/pixmap.c | 21 +++++++++++++++++++++ > 1 file changed, 21 insertions(+) > > diff --git a/dix/pixmap.c b/dix/pixmap.c > index 05aebc4..11d83fe 100644 > --- a/dix/pixmap.c > +++ b/dix/pixmap.c > @@ -173,6 +173,9 @@ PixmapStartDirtyTracking(PixmapPtr src, > { > ScreenPtr screen = src->drawable.pScreen; > PixmapDirtyUpdatePtr dirty_update; > + RegionPtr damageregion; > + RegionRec dstregion; > + BoxRec box; > > dirty_update = calloc(1, sizeof(PixmapDirtyUpdateRec)); > if (!dirty_update) > @@ -205,6 +208,24 @@ PixmapStartDirtyTracking(PixmapPtr src, > return FALSE; > } > > + /* Damage destination rectangle so that the destination pixmap contents > + * will get fully initialized > + */ > + box.x1 = dirty_update->x; > + box.y1 = dirty_update->y; > + if (dirty_update->rotation == RR_Rotate_90 || > + dirty_update->rotation == RR_Rotate_270) { > + box.x2 = dirty_update->x + slave_dst->drawable.height; > + box.y2 = dirty_update->y + slave_dst->drawable.width; > + } else { > + box.x2 = dirty_update->x + slave_dst->drawable.width; > + box.y2 = dirty_update->y + slave_dst->drawable.height; > + } > + RegionInit(&dstregion, &box, 1); > + damageregion = DamageRegion(dirty_update->damage); > + RegionUnion(damageregion, damageregion, &dstregion); > + RegionUninit(&dstregion); > + > DamageRegister(&src->drawable, dirty_update->damage); > xorg_list_add(&dirty_update->ent, &screen->pixmap_dirty_list); > return TRUE; > -- > 2.6.2 > > _______________________________________________ > [email protected]: X.Org development > Archives: http://lists.x.org/archives/xorg-devel > Info: http://lists.x.org/mailman/listinfo/xorg-devel _______________________________________________ [email protected]: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel
