[PATCH] Xi: check all handlers before applying property changes.

Peter Hutterer peter.hutterer at who-t.net
Thu Oct 9 23:01:00 PDT 2008


On Thu, Oct 09, 2008 at 03:42:50PM +0200, Simon Thum wrote:
> One non-ignoring handler is invoked at max. For this we have to
> differentiate the RC.

> When a handler is invoked, it may decide to call a new function which
> allows it to pass through to handlers AFTER itself. A logical complement
> would be the ability to register handlers at head and tail.

something like

--
RegisterHandler(myHandler, HEAD);
RegisterHandler(otherHandler, TAIL);

void myHandler(foo) {

   CallNextHandler(); /* causes otherHandler to be called */
   return PROP_HANDLED;
}
--

Where CallNextHandler calls the handler next in the queue.
Do I get that right? 

If so, a few questions:
- A handler that registers at the head of the queue, assumes it is before
  other handlers. Thus it has to be aware of other handlers in the first
  place?
- Two handlers that place themselves at the head of the queue now both assume
  they are called first?
- What if the handler order has to be different for each property?
- What reason would a handler have for registering at the tail, other than
  that it doesn't care whether it is ever called or not? 
  At which point - what's the point of this handler anyway?
- if myHandler allows pass-through after changing state, what if otherHandler
  returns an error code?

(I do have the feeling that I didn't quite understand you proposal)
 
Cheers,
  Peter



More information about the xorg mailing list