On Thu 21 Apr 2016, Frank Henigman wrote:
> Thanks Emil and Chad for reviewing my json series.  All suggestions
> implemented in v2, except where I replied inline.  I'll hold off
> sending in case there's more back-and-forth over the first set of
> comments.  Would also be nice if Chad merged his get-current branch
> into master, as I use it in v2.

Hi Frank, I think now is a good time to send v2.

Since the patches are not on the list yet, I'll say a few comments here:

        core: add JSON library
                Overall, looks good. The only problem I see is
                a potential buffer overflow in put().

        waffle: add waffle_display_info_json()
                For simplicity's sake, please drop the 'platform_too'
                parameter to waffle_display_info_json(). Waffle should
                return all the info, and the client the should ignore
                any keys (such as platform-specific keys) that it does
                not recognize.

                The patch has some problems regarding "current-ness".
                It says the new function "returns a JSON string
                containing information about the current context on the
                given display". As defined by EGL and GLX, though,
                current-ness is a mapping of (thread) -> (display,
                context, surfaces), and not a mapping of
                (thread, display) -> (context, surfaces).

                As a consequence, the waffle_display_info_json()
                signature is incorrect because due to its 'display'
                parameter. If the function has a display parameter, then
                that allows the user to do undefined things such as

                        struct waffle_display *dpy1 = ...;
                        struct waffle_display *ctx1 = ...;

                        struct waffle_display *dpy2 = ...;
                        struct waffle_display *ctx2 = ...;

                        waffle_make_current(dpy1, NULL, ctx1);
                        // use ctx1
                        waffle_make_current(dpy2, NULL, ctx2);
                        // use ctx2

                        // Now dpy2 and ctx2 are bound to the thread.
                        // So what should waffle_display_info_json() do
                        // when given dpy1?

        wflinfo: another option for JSON output
                As far as I can tell, the two JSON formats are identical
                except for formatting, as they should be :). Since
                they're identical, I don't understand the need to add
                the new format 'json2'.

                At the end of this patch series, your json is Waffle's
                *real* json. So I expected this patch to remove Dylan's
                json code from wflinfo.c and replace it with yours. Then
                --format=json would return your json.

> When comparing my json output to the landed json output I noticed that
> the landed version omits the context flags found in the old format.
> Was that deliberate?  If so I'll remove it from my json.

It's an accident that wflinfo does not currently report the context
flags. I'd like to see them in the wflinfo output.

> Not sure if I did the right thing with glx info.  Seems like all three
> sections (server, client, common) show about the same list of
> extensions.  That can wait until I send v2, or if anyone wants to look
> now:
> https://github.com/fjhenigman/waffle/commit/b358ac50c00ce51fae6546b1e96c9adc32fcbdc7

As Emil said earlier: wflinfo should report all three sections, as they
do sometimes differ.
waffle mailing list

Reply via email to