Verified that the intent of the return type of wl_dispatcher_func_t is
for an error code. I'm including a response from J Ekstrand, author
of wl_dispatcher_func_t inline below, for the record.

> On Nov 17, 2016, at 8:28 AM, Yong Bakos <[email protected]> wrote:
> 
> On Nov 17, 2016, at 8:23 AM, Yong Bakos <[email protected]> wrote:
>> 
>> From: Yong Bakos <[email protected]>
>> 
>> Adjust the brief, clarify the behavior and arguments, correct a grammar
>> error, and document the parameters.
>> 
>> Signed-off-by: Yong Bakos <[email protected]>
> 
> Eh - what is the int return value for?
> connection.c doesn't use it when invoking a wl_dispatcher_func_t.
> 
> yong

Here...

>> Begin forwarded message:
>> 
>> From: Jason Ekstrand <...>
>> Subject: Re: [PATCH wayland] util: Clarify documentation of 
>> wl_dispatcher_func_t
>> Date: November 20, 2016 at 7:39:04 PM PST
>> To: Yong Bakos <...>
>> 
>> On Sat, Nov 19, 2016 at 10:55 PM, Yong Bakos <...> wrote:
>>> Hi Jason,
>>> I've been working on documentation for Wayland and was wondering if you
>>> might be able to tell me what the intent for the `int` return value of
>>> wl_dispatcher_func_t is for?
>> 
>> First off, I should say that any answers I give are from a very rusty 
>> memory.  It's been about 4 years since I worked on that.  I believe the 
>> intention (which may not have been fully implemented) was for error 
>> handling.  If the dispatcher had an error, it would get propagated up and 
>> returned out of the event loop dispatch function.  Ideally, if working with 
>> a higher-level language such as Java or Python, an exception would get 
>> turned into an error and then back to an exception thrown from the 
>> language-wrapped queue dispatch function.  That was the intention but I'm 
>> not sure if it ever worked quite as well as all that.  It's entirely 
>> possible that libwayland simply ignores it which would make it useless.
>> 
>> --Jason
>>  
>>> Thank you,
>>> yong
>>> 
>>> typedef int (*wl_dispatcher_func_t)(const void *, void *, uint32_t, ...
>> 

Will send a v2 with the return type amendment.

yong


> ---
>> src/wayland-util.h | 25 +++++++++++++++----------
>> 1 file changed, 15 insertions(+), 10 deletions(-)
>> 
>> diff --git a/src/wayland-util.h b/src/wayland-util.h
>> index 50f3372..17908fd 100644
>> --- a/src/wayland-util.h
>> +++ b/src/wayland-util.h
>> @@ -607,21 +607,26 @@ union wl_argument {
>> };
>> 
>> /**
>> - * \brief A function pointer type for a dispatcher.
>> + * Dispatcher function type alias
>> *
>> * A dispatcher is a function that handles the emitting of callbacks in client
>> - * code.  For programs directly using the C library, this is done by using
>> - * libffi to call function pointers.  When binding to languages other than 
>> C,
>> + * code. For programs directly using the C library, this is done by using
>> + * libffi to call function pointers. When binding to languages other than C,
>> * dispatchers provide a way to abstract the function calling process to be
>> * friendlier to other function calling systems.
>> *
>> - * A dispatcher takes five arguments:  The first is the dispatcher-specific
>> - * implementation data associated with the target object.  The second is the
>> - * object on which the callback is being invoked (either wl_proxy or
>> - * wl_resource).  The third and fourth arguments are the opcode the 
>> wl_message
>> - * structure corresponding to the callback being emitted.  The final 
>> argument
>> - * is an array of arguments received from the other process via the wire
>> - * protocol.
>> + * A dispatcher takes five arguments: The first is the dispatcher-specific
>> + * implementation associated with the target object. The second is the 
>> object
>> + * upon which the callback is being invoked (either wl_proxy or 
>> wl_resource).
>> + * The third and fourth arguments are the opcode and the wl_message
>> + * corresponding to the callback. The final argument is an array of 
>> arguments
>> + * received from the other process via the wire protocol.
>> + *
>> + * \param "const void *" Dispatcher-specific implementation data
>> + * \param "void *" Callback invocation target (wl_proxy or `wl_resource`)
>> + * \param uint32_t Callback opcode
>> + * \param "const struct wl_message *" Callback message signature
>> + * \param "union wl_argument *" Array of received arguments
>> */
>> typedef int (*wl_dispatcher_func_t)(const void *, void *, uint32_t,
>>                                  const struct wl_message *,
>> -- 
>> 2.7.2
>> 
>> _______________________________________________
>> wayland-devel mailing list
>> [email protected]
>> https://lists.freedesktop.org/mailman/listinfo/wayland-devel
> 
> _______________________________________________
> wayland-devel mailing list
> [email protected]
> https://lists.freedesktop.org/mailman/listinfo/wayland-devel

_______________________________________________
wayland-devel mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/wayland-devel

Reply via email to