[waffle] [PATCH 07/12] waffle: support platform-specific information

Emil Velikov emil.l.velikov at gmail.com
Sun Apr 24 10:36:28 UTC 2016


On 21 April 2016 at 21:26, Frank Henigman <fjhenigman at google.com> wrote:
> On Fri, Jan 8, 2016 at 7:44 AM, Emil Velikov <emil.l.velikov at gmail.com> wrote:
>> On 6 January 2016 at 21:56, Frank Henigman <fjhenigman at google.com> wrote:
>>> Add a platform hook so platform-specific information can be included
>>> by waffle_display_info_json().
>>>
>>> Signed-off-by: Frank Henigman <fjhenigman at google.com>
>>> ---
>>>  src/waffle/api/waffle_display.c  | 10 +++++++++-
>>>  src/waffle/core/wcore_platform.h |  4 ++++
>>>  2 files changed, 13 insertions(+), 1 deletion(-)
>>>
>>> diff --git a/src/waffle/api/waffle_display.c b/src/waffle/api/waffle_display.c
>>> index 7abe2ef..d6988ac 100644
>>> --- a/src/waffle/api/waffle_display.c
>>> +++ b/src/waffle/api/waffle_display.c
>>> @@ -367,8 +367,16 @@ waffle_display_info_json(struct waffle_display *self, bool platform_too)
>>>
>>>      json_appendv(jj, "{", "generic", "{", "");
>>>      add_generic_info(jj, wc_self->current_context);
>>> -    json_appendv(jj, "}", "}", "");
>>> +    json_append(jj, "}");
>>>
>>> +    if (platform_too) {
>>> +        json_appendv(jj, "platform", "{", "");
>>> +        if (api_platform->vtbl->display.info_json)
>>> +            api_platform->vtbl->display.info_json(wc_self, jj);
>> The rest of waffle tends to set UNSUPPORTED_ON_PLATFORM if the backend
>> is missing the vfunc.
>
> I'm reluctant to set an error for something that isn't clearly an
> error (it might just be that a backend doesn't have platform-specific
> details) because it could add a burden to the user to distinguish this
> case from definite errors.
With all respect I have to disagree. Error checking/handling is not a
'burden'. Even if some choose to ignore it that doesn't make it less
relevant ;-)

Obviously things would be way easier/cleaner if things were split -
generic info vs platform specific (or even finer). As-is, with all of
them in one piece, no error-checking or UNSUPPORTED_ON_PLATFORM one
gets badly formatted/corrupted json. Thus the user has no way of
knowing if things failed for reason some, or the setup simply lacks
the information Y that they need.
</minirant>

>  If someone does need to act on the
> presence or absence or platform-specifics, they can always examine the
> json.
Personally I'd just discard the check and use the function
unconditionally. For platforms that I'm unsure I'll just put a uniform
stub alike "not-implemented", thus any users parsing the data will
have clear feedback.

Does that sound reasonable ?
Emil


More information about the waffle mailing list