[PATCH weston 15/15] libweston: introduce weston_output_from_resource()

Pekka Paalanen ppaalanen at gmail.com
Mon Jul 24 14:32:29 UTC 2017


On Tue, 4 Apr 2017 22:19:55 +0200
Armin Krezović <krezovic.armin at gmail.com> wrote:

> On 04.04.2017 12:58, Pekka Paalanen wrote:
> > From: Pekka Paalanen <pekka.paalanen at collabora.co.uk>
> > 
> > This is a simple wrapper for casting the user data of a wl_resource into
> > a struct weston_output pointer. Using the wrapper clearly marks all the
> > places where a wl_output protocol object is used.
> > 
> > Replace ALL wl_output related calls to wl_resource_get_user_data() with
> > a call to weston_output_from_resource().
> > 
> > This patch does not add any type checks or asserts to ensure the user
> > data actually is a weston_output. That is left for another patch, as
> > well as introducing similar wrappers for other casts.
> >   
> 
> Hi,
> 
> Now, introducing and exporting this, without any safety checks is
> just asking for trouble. If it wasn't exported, it would be
> fine. But don't underestimate libweston user, people make mistakes.

Hi,

it is a good question though why I didn't add any asserts on this path.
It might be because this will be replaced with a
weston_head_from_resource() and maybe I had a plan for all similar
cast-wrappers but I have long forgot.

I'll add a simple assert there to check the wl_resource interface.


Thanks,
pq

> > Signed-off-by: Pekka Paalanen <pekka.paalanen at collabora.co.uk>
> > ---
> >  compositor/weston-screenshooter.c   |  2 +-
> >  desktop-shell/input-panel.c         |  2 +-
> >  desktop-shell/shell.c               |  4 ++--
> >  fullscreen-shell/fullscreen-shell.c |  4 ++--
> >  ivi-shell/input-panel-ivi.c         |  2 +-
> >  libweston-desktop/wl-shell.c        |  2 +-
> >  libweston-desktop/xdg-shell-v5.c    |  2 +-
> >  libweston-desktop/xdg-shell-v6.c    |  2 +-
> >  libweston/compositor.c              | 13 +++++++++++++
> >  libweston/compositor.h              |  3 +++
> >  tests/weston-test.c                 |  2 +-
> >  11 files changed, 27 insertions(+), 11 deletions(-)

> > diff --git a/libweston/compositor.c b/libweston/compositor.c
> > index cd5b6ec..8f53b65 100644
> > --- a/libweston/compositor.c
> > +++ b/libweston/compositor.c
> > @@ -4318,6 +4318,19 @@ bind_output(struct wl_client *client,
> >  		wl_output_send_done(resource);
> >  }
> >  
> > +/** Get the backing object of wl_output
> > + *
> > + * \param resource A wl_output protocol object.
> > + * \return The backing object (user data) of a wl_resource representing a
> > + * wl_output protocol object.
> > + */
> > +WL_EXPORT struct weston_output *
> > +weston_output_from_resource(struct wl_resource *resource)
> > +{
> > +	return wl_resource_get_user_data(resource);
> > +}
> > +
> > +
> >  /* Move other outputs when one is resized so the space remains contiguous. */
> >  static void
> >  weston_compositor_reflow_outputs(struct weston_compositor *compositor,
> > diff --git a/libweston/compositor.h b/libweston/compositor.h
> > index c375f48..e5f111c 100644
> > --- a/libweston/compositor.h
> > +++ b/libweston/compositor.h
> > @@ -1937,6 +1937,9 @@ weston_output_disable(struct weston_output *output);
> >  void
> >  weston_pending_output_coldplug(struct weston_compositor *compositor);
> >  
> > +struct weston_output *
> > +weston_output_from_resource(struct wl_resource *resource);
> > +
> >  #ifdef  __cplusplus
> >  }
> >  #endif


-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 833 bytes
Desc: OpenPGP digital signature
URL: <https://lists.freedesktop.org/archives/wayland-devel/attachments/20170724/1041c0ce/attachment.sig>


More information about the wayland-devel mailing list