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. _______________________________________________ xorg-devel mailing list [email protected] http://lists.x.org/mailman/listinfo/xorg-devel
