[PATCH weston 02/12 v2] libweston: Add initial output API for windowed outputs configuration

Quentin Glidic sardemff7+wayland at sardemff7.net
Tue Aug 16 10:18:59 UTC 2016


On 14/08/2016 17:28, Armin Krezović 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.
>
> v2:
>
>  - Rename output-api.h to windowed-output-api.h.
>  - Rename output_configure() to output_set_size().
>  - Document return values.
>
> Signed-off-by: Armin Krezović <krezovic.armin at gmail.com>

Still good, though, better :-)
Reviewed-by: Quentin Glidic <sardemff7+git at sardemff7.net>

Cheers,


> ---
>  Makefile.am                     |  1 +
>  libweston/windowed-output-api.h | 92 +++++++++++++++++++++++++++++++++++++++++
>  2 files changed, 93 insertions(+)
>  create mode 100644 libweston/windowed-output-api.h
>
> diff --git a/Makefile.am b/Makefile.am
> index 85fd718..e669e8d 100644
> --- a/Makefile.am
> +++ b/Makefile.am
> @@ -271,6 +271,7 @@ libwestoninclude_HEADERS =			\
>  	libweston/compositor-rdp.h		\
>  	libweston/compositor-wayland.h		\
>  	libweston/compositor-x11.h		\
> +	libweston/windowed-output-api.h		\
>  	libweston/plugin-registry.h		\
>  	libweston/timeline-object.h		\
>  	shared/matrix.h				\
> diff --git a/libweston/windowed-output-api.h b/libweston/windowed-output-api.h
> new file mode 100644
> index 0000000..534cee1
> --- /dev/null
> +++ b/libweston/windowed-output-api.h
> @@ -0,0 +1,92 @@
> +/*
> + * Copyright © 2016 Collabora, Ltd.
> + *
> + * 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_WINDOWED_OUTPUT_API_H
> +#define WESTON_WINDOWED_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 {
> +	/** Assign a given width and height to an output.
> +	 *
> +	 * \param output An output to be configured.
> +	 * \param width  Desired width of the output.
> +	 * \param height Desired height of the output.
> +	 *
> +	 * Returns 0 on success, -1 on failure.
> +	 *
> +	 * This assigns a desired width and height to a windowed
> +         * output. The backend decides what should be done and applies
> +	 * the desired configuration. After using this function and
> +	 * generic weston_output_set_*, a windowed
> +	 * output should be in a state where weston_output_enable()
> +	 * can be run.
> +	 */
> +	int (*output_set_size)(struct weston_output *output,
> +			       int width, int height);
> +
> +	/** Create a new windowed output.
> +	 *
> +	 * \param compositor The compositor instance.
> +	 * \param name       Desired name for a new output.
> +	 *
> +	 * Returns 0 on success, -1 on failure.
> +	 *
> +	 * 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.
> +	 */
> +	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_WINDOWED_OUTPUT_API_H */
>


-- 

Quentin “Sardem FF7” Glidic


More information about the wayland-devel mailing list