[PATCH xserver] composite: Inhibit window background paint with manual subwindow redirection

Owen Taylor otaylor at redhat.com
Fri Jul 22 11:49:54 PDT 2011


On Thu, 2011-07-21 at 00:24 +0300, Ville Syrjälä wrote:
> > I did actually have to see it live to figure out what was going on ...
> > but once I saw it, and thought about it a bit, I was able to avoid
> > digging out the debugger.
> > 
> > What's going on is that for a window with a non-None background, the
> > copying between the parent pixmap and the composite pixmap that we do
> > isn't sufficient - all that copying is doing is making sure that things
> > _look_ right initially - it doesn't actually suppress expose event
> > generation and the background painting that happens during expose event
> > generation.
> 
> The pointless expose events were supposed to be eliminated by another
> patch set [1]. At least my test app [2] manages to redirect/unredirect
> non-None windows w/o generating unnecessary expose events.

Hmm, OK, I had those patches applied, but figured that the expose events
were being generated by some other path than Map/Unmap. It turns out
that they were being generated because my test Mutter code wasn't
ordering things correctly.

With that fixed, I can't reproduce any flickering with Evince. It
redirects and unredirects seamlessly when I pop up a menu. (This is with
GTK+-3, but there shouldn't be any difference from GTK+-2 in this
regard.)

So, I'm not sure what was happening in your testing but I'm pretty happy
with how things are working for me!

- Owen




More information about the xorg-devel mailing list