[PATCH weston 10/14] libweston: Merge weston_output_init() into weston_output_enable()

Armin Krezović krezovic.armin at gmail.com
Fri Sep 30 12:11:11 UTC 2016


Reviewed-by: Quentin Glidic <sardemff7+git at sardemff7.net>
Reviewed-by: Pekka Paalanen <pekka.paalanen at collabora.co.uk>
Signed-off-by: Armin Krezović <krezovic.armin at gmail.com>
---
 libweston/compositor.c | 124 ++++++++++++++++---------------------------------
 1 file changed, 41 insertions(+), 83 deletions(-)

diff --git a/libweston/compositor.c b/libweston/compositor.c
index e5deeab..30eab1d 100644
--- a/libweston/compositor.c
+++ b/libweston/compositor.c
@@ -4272,80 +4272,6 @@ weston_output_move(struct weston_output *output, int x, int y)
 	}
 }
 
-/** Initialize a weston_output object's parameters
- *
- * \param output     The weston_output object to initialize
- * \param c          The output's compositor
- * \param x          x coordinate for the output in global coordinate space
- * \param y          y coordinate for the output in global coordinate space
- * \param mm_width   Physical width of the output as reported by the backend
- * \param mm_height  Physical height of the output as reported by the backend
- * \param transform  Rotation of the output
- * \param scale      Native scaling factor for the output
- *
- * Sets up the transformation, zoom, and geometry of the output using
- * the input properties.
- *
- * Establishes a repaint timer for the output with the relevant display
- * object's event loop.  See output_repaint_timer_handler().
- *
- * The output is assigned an ID.  Weston can support up to 32 distinct
- * outputs, with IDs numbered from 0-31; the compositor's output_id_pool
- * is referred to and used to find the first available ID number, and
- * then this ID is marked as used in output_id_pool.
- *
- * The output is also assigned a Wayland global with the wl_output
- * external interface.
- */
-WL_EXPORT void
-weston_output_init(struct weston_output *output, struct weston_compositor *c,
-		   int x, int y, int mm_width, int mm_height, uint32_t transform,
-		   int32_t scale)
-{
-	struct wl_event_loop *loop;
-
-	/* Verify we haven't reached the limit of 32 available output IDs */
-	assert(ffs(~c->output_id_pool) > 0);
-
-	output->compositor = c;
-	output->x = x;
-	output->y = y;
-	output->mm_width = mm_width;
-	output->mm_height = mm_height;
-	output->dirty = 1;
-	output->original_scale = scale;
-
-	weston_output_transform_scale_init(output, transform, scale);
-	weston_output_init_zoom(output);
-
-	weston_output_init_geometry(output, x, y);
-	weston_output_damage(output);
-
-	wl_signal_init(&output->frame_signal);
-	wl_signal_init(&output->destroy_signal);
-	wl_list_init(&output->animation_list);
-	wl_list_init(&output->resource_list);
-	wl_list_init(&output->feedback_list);
-	wl_list_init(&output->link);
-
-	loop = wl_display_get_event_loop(c->wl_display);
-	output->repaint_timer = wl_event_loop_add_timer(loop,
-					output_repaint_timer_handler, output);
-
-	/* Invert the output id pool and look for the lowest numbered
-	 * switch (the least significant bit).  Take that bit's position
-	 * as our ID, and mark it used in the compositor's output_id_pool.
-	 */
-	output->id = ffs(~output->compositor->output_id_pool) - 1;
-	output->compositor->output_id_pool |= 1u << output->id;
-
-	output->global =
-		wl_global_create(c->wl_display, &wl_output_interface, 3,
-				 output, bind_output);
-
-	output->enabled = true;
-}
-
 /** Adds an output to the compositor's output list and
  *  send the compositor's output_created signal.
  *
@@ -4540,9 +4466,6 @@ weston_compositor_add_pending_output(struct weston_output *output,
 	wl_signal_emit(&compositor->output_pending_signal, output);
 }
 
-/* NOTE: Some documentation is copy/pasted from weston_output_init(), as this
-   is intended to replace it. */
-
 /** Constructs a weston_output object that can be used by the compositor.
  *
  * \param output The weston_output object that needs to be enabled.
@@ -4578,15 +4501,17 @@ weston_compositor_add_pending_output(struct weston_output *output,
 WL_EXPORT int
 weston_output_enable(struct weston_output *output)
 {
+	struct weston_compositor *c = output->compositor;
 	struct weston_output *iterator;
+	struct wl_event_loop *loop;
 	int x = 0, y = 0;
 
 	assert(output->enable);
 
-	iterator = container_of(output->compositor->output_list.prev,
+	iterator = container_of(c->output_list.prev,
 				struct weston_output, link);
 
-	if (!wl_list_empty(&output->compositor->output_list))
+	if (!wl_list_empty(&c->output_list))
 		x = iterator->x + iterator->width;
 
 	/* Make sure the width and height are configured */
@@ -4601,10 +4526,43 @@ weston_output_enable(struct weston_output *output)
 	/* Remove it from pending/disabled output list */
 	wl_list_remove(&output->link);
 
-	/* TODO: Merge weston_output_init here. */
-	weston_output_init(output, output->compositor, x, y,
-			   output->mm_width, output->mm_height,
-			   output->transform, output->scale);
+	/* Verify we haven't reached the limit of 32 available output IDs */
+	assert(ffs(~c->output_id_pool) > 0);
+
+	output->x = x;
+	output->y = y;
+	output->dirty = 1;
+	output->original_scale = output->scale;
+
+	weston_output_transform_scale_init(output, output->transform, output->scale);
+	weston_output_init_zoom(output);
+
+	weston_output_init_geometry(output, x, y);
+	weston_output_damage(output);
+
+	wl_signal_init(&output->frame_signal);
+	wl_signal_init(&output->destroy_signal);
+	wl_list_init(&output->animation_list);
+	wl_list_init(&output->resource_list);
+	wl_list_init(&output->feedback_list);
+	wl_list_init(&output->link);
+
+	loop = wl_display_get_event_loop(c->wl_display);
+	output->repaint_timer = wl_event_loop_add_timer(loop,
+					output_repaint_timer_handler, output);
+
+	/* Invert the output id pool and look for the lowest numbered
+	 * switch (the least significant bit).  Take that bit's position
+	 * as our ID, and mark it used in the compositor's output_id_pool.
+	 */
+	output->id = ffs(~output->compositor->output_id_pool) - 1;
+	output->compositor->output_id_pool |= 1u << output->id;
+
+	output->global =
+		wl_global_create(c->wl_display, &wl_output_interface, 3,
+				 output, bind_output);
+
+	output->enabled = true;
 
 	/* Enable the output (set up the crtc or create a
 	 * window representing the output, set up the
-- 
2.10.0



More information about the wayland-devel mailing list