On Thu, 11 Aug 2016 17:33:57 +0200 Armin Krezović <krezovic.ar...@gmail.com> wrote:
> This adds new plugin-specific API for configuring outputs > on "windowed" backends, such as X11, wayland/non-fullscreen > and even headless (although, it doesn't have any windows, > its configuration is very similar). It can be used from > compositors to configure pending outputs and should be used > with previously added weston_output_set_{scale,transform} > to properly configure an output before enabling it. > > It also supports creating additional outputs on the mentioned > backends. > > Signed-off-by: Armin Krezović <krezovic.ar...@gmail.com> > --- > Makefile.am | 1 + > libweston/output-api.h | 88 > ++++++++++++++++++++++++++++++++++++++++++++++++++ Hi, the file name should probably be windowed-output-api.h. > 2 files changed, 89 insertions(+) > create mode 100644 libweston/output-api.h > > diff --git a/Makefile.am b/Makefile.am > index 32627f5..038e4da 100644 > --- a/Makefile.am > +++ b/Makefile.am > @@ -245,6 +245,7 @@ libwestoninclude_HEADERS = \ > libweston/compositor-rdp.h \ > libweston/compositor-wayland.h \ > libweston/compositor-x11.h \ > + libweston/output-api.h \ > libweston/plugin-registry.h \ > libweston/timeline-object.h \ > shared/matrix.h \ > diff --git a/libweston/output-api.h b/libweston/output-api.h > new file mode 100644 > index 0000000..ef33587 > --- /dev/null > +++ b/libweston/output-api.h > @@ -0,0 +1,88 @@ > +/* > + * Copyright © 2016 Collabora, Ltd. I think the copyright is not quite right, is it? :-) I wouldn't consider the boilerplate in this file copyrightable. > + * > + * Permission is hereby granted, free of charge, to any person obtaining > + * a copy of this software and associated documentation files (the > + * "Software"), to deal in the Software without restriction, including > + * without limitation the rights to use, copy, modify, merge, publish, > + * distribute, sublicense, and/or sell copies of the Software, and to > + * permit persons to whom the Software is furnished to do so, subject to > + * the following conditions: > + * > + * The above copyright notice and this permission notice (including the > + * next paragraph) shall be included in all copies or substantial > + * portions of the Software. > + * > + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, > + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF > + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND > + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS > + * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN > + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN > + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE > + * SOFTWARE. > + */ > + > +#ifndef WESTON_OUTPUT_API_H > +#define WESTON_OUTPUT_API_H > + > +#ifdef __cplusplus > +extern "C" { > +#endif > + > +#include "plugin-registry.h" > + > +struct weston_compositor; > +struct weston_output; > + > +#define WESTON_WINDOWED_OUTPUT_API_NAME "weston_windowed_output_api_v1" > + > +struct weston_windowed_output_api { > + /** Configure an output with given width and height. > + * > + * \param output An output to be configured. > + * \param width Desired width of the output. > + * \param height Desired height of the output. > + * > + * This configures a windowed output with desired width and > + * height. The backend decides what should be done and applies > + * the desired configuration. After using this function and > + * generic weston_output_set_{scale,transform}, a windowed > + * output should be in a state where weston_output_enable() > + * can be run. Return values? > + */ > + int (*output_configure)(struct weston_output *output, > + int width, int height); What Quentin said. We use the term "configure" already too much. set_size()? > + > + /** Create a new windowed output. > + * > + * \param compositor The compositor instance. > + * \param name Desired name for a new output. > + * > + * This creates a new output in the backend using this API. > + * After this function is ran, the created output should be > + * ready for configuration using the output_configure() and > + * weston_output_set_{scale,transform}(). > + * > + * An optional name can be assigned to it, so it can be used > + * by compositor to configure it. It can be NULL. Return values? Could we require the name to be set easily? I don't like unnamed outputs much. Or was there a name generated if this is NULL? > + */ > + int (*output_create)(struct weston_compositor *compositor, > + const char *name); > +}; > + > +static inline const struct weston_windowed_output_api * > +weston_windowed_output_get_api(struct weston_compositor *compositor) > +{ > + const void *api; > + api = weston_plugin_api_get(compositor, WESTON_WINDOWED_OUTPUT_API_NAME, > + sizeof(struct weston_windowed_output_api)); > + > + return (const struct weston_windowed_output_api *)api; > +} > + > +#ifdef __cplusplus > +} > +#endif > + > +#endif /* WESTON_OUTPUT_API_H */ Just a few details to improve, otherwise good. Thanks, pq
pgpNgyXtBUUK5.pgp
Description: OpenPGP digital signature
_______________________________________________ wayland-devel mailing list wayland-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/wayland-devel