unwrapping inside the wrapper (xf86Rotate)
airlied at redhat.com
Wed Sep 30 17:20:28 PDT 2009
On Wed, 2009-09-30 at 14:22 -0700, Keith Packard wrote:
> Excerpts from Dave Airlie's message of Wed Sep 30 13:04:35 -0700 2009:
> > Lots of drivers have block handlers, and really I'd like a solution
> > for 1.7 that doesn't break API which technically this kinda does,
> The driver block handler is at the bottom, all X server block handlers
> stack on top of that, so the driver doesn't have to deal with
> And, no, I don't know why drivers appear to believe that they need to
> deal with wrapping.
> > So I suggest fixing Rotate to operate like everyone else, and
> > for the future, doing it right, with a full audit.
> An audit of the X server should suffice here.
> composite/compinit.c: correct
> exa/exa.c: correct
> hw/xfree86/common/xf86VGAarbiter.c: incorrect
> hw/xfree86/dri/dri.c: incorrect (in several ways)
> hw/xfree86/modes/xf86Rotate.c: correct
> mi/misprite.c: incorrect
> render/animcur.c: correct
> Let's fix these. And, fix misprite to pull itself out of the block
> handler chain when there aren't any sw cursors; that function does a
> ton of stuff, and gets called frequently.
I just thought about this some more, if you have dynamic block handler
removal outside the block handler, won't the dynamically added/removed
handler always happen last i.e. after the driver one?
I really don't think you've thought this fully out, so I'll send a
patch to fix xf86Rotate.c to not dynamically block handle, and
if you want for 1.8 we can audit and fix up properly including all the
More information about the xorg-devel