Recognizing wl_display pointer for EGL (Re: Smart comparing of wl_display_interfaces)

Steven Newbury steve at snewbury.org.uk
Sat Oct 18 10:07:41 PDT 2014


On Sat, 2014-10-18 at 18:41 +0200, Kalrish Bäakjen wrote:
> If I understood it right, Dmitry, you are working on an EGL 
> implementation
> that should dynamically detect the type of the object passed to
> eglGetDisplay. Mesa already does that, but it is ugly and just a 
> hack that
> should be avoided. eglGetDisplay was not designed to support multiple
> platforms, hence why the EGL_EXT_platform_base[1] extension was 
> conceived.
> Consider implementing and switching to it - which, by the way, is 
> part of
> EGL 1.5.
> 
Interesting.  I'm currently unable to build webkit-gtk with X+wayland 
support against current wayland/mesa because it attempts to do 
something like this.

> 1:
> https://www.khronos.org/registry/egl/extensions/EXT/EGL_EXT_platform_base.txt
> 
> On Fri, Oct 17, 2014 at 9:00 PM, Bill Spitzak <spitzak at gmail.com> 
> wrote:
> 
> > On 10/16/2014 11:16 PM, Pekka Paalanen wrote:
> > 
> >  ...adding a function int/bool wl_is_wl_display_pointer(void *p) 
> > into
> > > libwayland-client.so. As that function would be built into
> > > libwayland-client.so, it naturally uses the client.so version of
> > > wl_display_interface symbol (unless dynamic linking miraculously
> > > manages to mess that up?).
> > > 
> > > 'p' would be the tentative 'struct wl_display *', so that the
> > > implementation details of struct wl_display would be contained in
> > > libwayland-client.so, and not leaked elsewhere like e.g. in Mesa.
> > > 
> > 
> > Might be better if the function was more like a cast. It returns 
> > either
> > (wl_display*)p or NULL depending on the test. The reason is so the 
> > user can
> > just assign it to a correct pointer without doing the cast 
> > themselves. This
> > might be important if more of these casts are added in the future, 
> > it makes
> > it harder to accidentally run the wrong test for the cast you want 
> > to do:
> > 
> >   struct wl_display* wl_display_dynamic_cast (void* p) {
> >     if (test(p)) return (struct wl_display*)p;
> >     else return 0;
> >   }
> > 
> >  I am unsure about the exact definition of 
> > wl_is_wl_display_pointer():
> > > can it do the dereferencability check itself, or should we 
> > > require the
> > > caller to guarantee that dereferencing cannot crash. The latter 
> > > would
> > > leave the portability burden on the callers rather than 
> > > libwayland.
> > > 
> > 
> > Probably it should handle NULL.
> > 
> > Maybe it should check alignment if wl_display has stricter 
> > alignment
> > restrictions than some other plausable arguments.
> > 
> > It does not seem to me that a check for pointing to valid memory is
> > necessary.
> > 
> > _______________________________________________
> > wayland-devel mailing list
> > wayland-devel at lists.freedesktop.org
> > http://lists.freedesktop.org/mailman/listinfo/wayland-devel
> > 
> _______________________________________________
> wayland-devel mailing list
> wayland-devel at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/wayland-devel
> 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 181 bytes
Desc: This is a digitally signed message part
URL: <http://lists.freedesktop.org/archives/wayland-devel/attachments/20141018/b0bc719a/attachment.sig>


More information about the wayland-devel mailing list