On 16.02.2015 20:51, Chris Wilson wrote: > If we handle a vblank notification and perform a copy whilst a flip is > still pending, we mark the pending flip for abort. After marking the > next flip completion for abortion, we then proceed to copy the requested > region into the restored Window drawable. However, when we then process > the unflip for the aborted Pixmap we copy the contents of flip pixmap > over top of the previously copied region - overwriting it with stale > data. > > A simplish hack that seems to prevent this is to mark the flip_window as > NULL during set_abort so that unflip skips the copy back over the > updated contents. > > Signed-off-by: Chris Wilson <ch...@chris-wilson.co.uk> > --- > present/present.c | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > > diff --git a/present/present.c b/present/present.c > index 9a283d4..e9ccfb8 100644 > --- a/present/present.c > +++ b/present/present.c > @@ -401,10 +401,12 @@ present_set_abort_flip(ScreenPtr screen) > * 2D applications drawing to the wrong pixmap. > */ > > - if (screen_priv->flip_window) > + if (screen_priv->flip_window) { > present_set_tree_pixmap(screen_priv->flip_window, > screen_priv->flip_pixmap, > pixmap); > + screen_priv->flip_window = NULL; > + } > > if (screen->root) > present_set_tree_pixmap(screen->root, NULL, pixmap); >
Have you found a less hackish solution in the meantime? -- Earthling Michel Dänzer | http://www.amd.com Libre software enthusiast | Mesa and X developer _______________________________________________ xorg-devel@lists.x.org: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel