[PATCH weston v3 06/36] libweston: refactor weston_mode_switch_finish
Quentin Glidic
sardemff7+wayland at sardemff7.net
Tue Oct 31 12:40:02 UTC 2017
On 10/31/17 12:48 PM, Pekka Paalanen wrote:
> From: Pekka Paalanen <pekka.paalanen at collabora.co.uk>
>
> Split out a new function. This is a pure refactoring, no change in
> behaviour.
>
> This helps a following patch that adds a loop over output->head_list.
>
> Signed-off-by: Pekka Paalanen <pekka.paalanen at collabora.co.uk>
Quite obvious:
Reviewed-by: Quentin Glidic <sardemff7+git at sardemff7.net>
Thanks,
> ---
> libweston/compositor.c | 57 +++++++++++++++++++++++++++++++-------------------
> 1 file changed, 36 insertions(+), 21 deletions(-)
>
> diff --git a/libweston/compositor.c b/libweston/compositor.c
> index c3c7e27c..d96c96d4 100644
> --- a/libweston/compositor.c
> +++ b/libweston/compositor.c
> @@ -76,15 +76,45 @@ weston_output_transform_scale_init(struct weston_output *output,
> static void
> weston_compositor_build_view_list(struct weston_compositor *compositor);
>
> -static void weston_mode_switch_finish(struct weston_output *output,
> - int mode_changed,
> - int scale_changed)
> +/** Send wl_output events for mode and scale changes
> + *
> + * \param head Send on all resources bound to this head.
> + * \param mode_changed If true, send the current mode.
> + * \param scale_changed If true, send the current scale.
> + */
> +static void
> +weston_mode_switch_send_events(struct weston_head *head,
> + bool mode_changed, bool scale_changed)
> +{
> + struct weston_output *output = head->output;
> + struct wl_resource *resource;
> + int version;
> +
> + wl_resource_for_each(resource, &head->resource_list) {
> + if (mode_changed) {
> + wl_output_send_mode(resource,
> + output->current_mode->flags,
> + output->current_mode->width,
> + output->current_mode->height,
> + output->current_mode->refresh);
> + }
> +
> + version = wl_resource_get_version(resource);
> + if (version >= WL_OUTPUT_SCALE_SINCE_VERSION && scale_changed)
> + wl_output_send_scale(resource, output->current_scale);
> +
> + if (version >= WL_OUTPUT_DONE_SINCE_VERSION)
> + wl_output_send_done(resource);
> + }
> +}
> +
> +static void
> +weston_mode_switch_finish(struct weston_output *output,
> + int mode_changed, int scale_changed)
> {
> struct weston_seat *seat;
> struct weston_head *head;
> - struct wl_resource *resource;
> pixman_region32_t old_output_region;
> - int version;
>
> pixman_region32_init(&old_output_region);
> pixman_region32_copy(&old_output_region, &output->region);
> @@ -133,22 +163,7 @@ static void weston_mode_switch_finish(struct weston_output *output,
> head = &output->head;
>
> /* notify clients of the changes */
> - wl_resource_for_each(resource, &head->resource_list) {
> - if (mode_changed) {
> - wl_output_send_mode(resource,
> - output->current_mode->flags,
> - output->current_mode->width,
> - output->current_mode->height,
> - output->current_mode->refresh);
> - }
> -
> - version = wl_resource_get_version(resource);
> - if (version >= WL_OUTPUT_SCALE_SINCE_VERSION && scale_changed)
> - wl_output_send_scale(resource, output->current_scale);
> -
> - if (version >= WL_OUTPUT_DONE_SINCE_VERSION)
> - wl_output_send_done(resource);
> - }
> + weston_mode_switch_send_events(head, mode_changed, scale_changed);
> }
>
>
>
--
Quentin “Sardem FF7” Glidic
More information about the wayland-devel
mailing list