implementing IN_PROGRESS

Thiago Macieira thiago.macieira at trolltech.com
Sat Feb 25 12:40:31 PST 2006


Havoc Pennington wrote:
>Other suggestions?

Is this part of the solution to the library->binding->usercode->library 
recursion we talked about earlier?

If so, the solution I had considered was much simpler:

* no modification to the dispatch lock
* when calling to user (binding) code, the binding has the option to 
return HANDLED, NOT_HANDLED and (new one) PARTIALLY_HANDLED.
* when receiving a PARTIALLY_HANDLED return code, the code would pop the 
message from the queue just as if it had been fully handled and place it 
in a new queue, allocated on the stack, local to the function.
* after all other locks have been released, call the binding again for all 
the PARTIALLY_HANDLED messages. There is no return code: the binding MUST 
handle it fully.

Whether the function to be called for the second time is the same one or a 
new one for the message filters / object handlers I leave it for you to 
decide.

This makes the solution completely ABI/API compatible for existing code, 
since they won't enter the new codepath because they will never return 
PARTIALLY_HANDLED.

-- 
Thiago José Macieira - thiago.macieira AT trolltech.com
Trolltech AS - Sandakerveien 116, NO-0402 Oslo, Norway
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 191 bytes
Desc: not available
Url : http://lists.freedesktop.org/archives/dbus/attachments/20060225/ceca9fe3/attachment.pgp


More information about the dbus mailing list