unwrapping inside the wrapper (xf86Rotate)

Dave Airlie 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
> wrapping.
> 
> 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
drivers.

Sound sane?
Dave.




More information about the xorg-devel mailing list