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
_______________________________________________
xorg mailing list
xorg@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/xorg

Reply via email to