- Removed weston_backend_output_config structure; Outputs should be configured from compositors using plugin-api.
- Merged weston_output_init() into weston_output_enable() - Renamed weston_output_init_pending() to weston_output_init() Signed-off-by: Armin Krezović <krezovic.ar...@gmail.com> --- libweston/compositor-drm.c | 2 +- libweston/compositor-fbdev.c | 2 +- libweston/compositor-headless.c | 2 +- libweston/compositor-rdp.c | 2 +- libweston/compositor-wayland.c | 4 +- libweston/compositor-x11.c | 2 +- libweston/compositor.c | 130 ++++++++++++++-------------------------- libweston/compositor.h | 22 +------ 8 files changed, 54 insertions(+), 112 deletions(-) diff --git a/libweston/compositor-drm.c b/libweston/compositor-drm.c index 76c1314..b3c63d6 100644 --- a/libweston/compositor-drm.c +++ b/libweston/compositor-drm.c @@ -2550,7 +2550,7 @@ create_output_for_connector(struct drm_backend *b, output->destroy_pending = 0; output->disable_pending = 0; - weston_output_init_pending(&output->base, b->compositor); + weston_output_init(&output->base, b->compositor); return 0; } diff --git a/libweston/compositor-fbdev.c b/libweston/compositor-fbdev.c index afa1e7a..0dad030 100644 --- a/libweston/compositor-fbdev.c +++ b/libweston/compositor-fbdev.c @@ -498,7 +498,7 @@ fbdev_output_create(struct fbdev_backend *backend, output->base.disable = NULL; output->base.enable = fbdev_output_enable; - weston_output_init_pending(&output->base, backend->compositor); + weston_output_init(&output->base, backend->compositor); /* only one static mode in list */ output->mode.flags = diff --git a/libweston/compositor-headless.c b/libweston/compositor-headless.c index 793b8a9..31ae0e2 100644 --- a/libweston/compositor-headless.c +++ b/libweston/compositor-headless.c @@ -222,7 +222,7 @@ headless_output_create(struct weston_compositor *compositor, output->base.disable = headless_output_disable; output->base.enable = headless_output_enable; - weston_output_init_pending(&output->base, compositor); + weston_output_init(&output->base, compositor); return 0; } diff --git a/libweston/compositor-rdp.c b/libweston/compositor-rdp.c index b217d7d..7058567 100644 --- a/libweston/compositor-rdp.c +++ b/libweston/compositor-rdp.c @@ -570,7 +570,7 @@ rdp_backend_create_output(struct weston_compositor *compositor) output->base.disable = rdp_output_disable; output->base.enable = rdp_output_enable; - weston_output_init_pending(&output->base, compositor); + weston_output_init(&output->base, compositor); return 0; } diff --git a/libweston/compositor-wayland.c b/libweston/compositor-wayland.c index e67adf9..2e68674 100644 --- a/libweston/compositor-wayland.c +++ b/libweston/compositor-wayland.c @@ -1125,7 +1125,7 @@ wayland_output_create(struct weston_compositor *compositor, const char *name) output->base.name = name ? strdup(name) : NULL; - weston_output_init_pending(&output->base, compositor); + weston_output_init(&output->base, compositor); return 0; } @@ -1224,7 +1224,7 @@ wayland_output_create_for_parent_output(struct wayland_backend *b, output->user_data = poutput; output->base.name = NULL; - weston_output_init_pending(&output->base, b->compositor); + weston_output_init(&output->base, b->compositor); return 0; } diff --git a/libweston/compositor-x11.c b/libweston/compositor-x11.c index 10bce65..0158d4f 100644 --- a/libweston/compositor-x11.c +++ b/libweston/compositor-x11.c @@ -1017,7 +1017,7 @@ x11_output_create(struct weston_compositor *compositor, output->base.disable = x11_output_disable; output->base.enable = x11_output_enable; - weston_output_init_pending(&output->base, compositor); + weston_output_init(&output->base, compositor); return 0; } diff --git a/libweston/compositor.c b/libweston/compositor.c index f60ebb8..84715ac 100644 --- a/libweston/compositor.c +++ b/libweston/compositor.c @@ -4220,80 +4220,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->initialized = true; -} - /** Adds an output to the compositor's output list and * send the compositor's output_created signal. * @@ -4419,8 +4345,8 @@ weston_output_set_transform(struct weston_output *output, * disable before it returns. */ WL_EXPORT void -weston_output_init_pending(struct weston_output *output, - struct weston_compositor *compositor) +weston_output_init(struct weston_output *output, + struct weston_compositor *compositor) { output->compositor = compositor; output->destroying = 0; @@ -4442,9 +4368,6 @@ weston_output_init_pending(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. @@ -4480,15 +4403,17 @@ weston_output_init_pending(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 */ @@ -4503,10 +4428,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->initialized = true; /* Enable the output (set up the crtc or create a * window representing the output, set up the @@ -4530,7 +4488,7 @@ weston_output_enable(struct weston_output *output) * * \param output The weston_output object that needs to be disabled. * - * See weston_output_init_pending() for more information on the + * See weston_output_init() for more information on the * state output is returned to. * * Calls a backend specific function to disable an output, in case diff --git a/libweston/compositor.h b/libweston/compositor.h index 0cb04ad..af790a7 100644 --- a/libweston/compositor.h +++ b/libweston/compositor.h @@ -683,20 +683,6 @@ enum weston_capability { WESTON_CAP_VIEW_CLIP_MASK = 0x0010, }; -/* Configuration struct for an output. - * - * This struct is used to pass the configuration for an output - * to the compositor backend when creating a new output. - * The backend can subclass this struct to handle backend - * specific data. - */ -struct weston_backend_output_config { - uint32_t transform; - uint32_t width; - uint32_t height; - uint32_t scale; -}; - /* Configuration struct for a backend. * * This struct carries the configuration for a backend, and it's @@ -1591,9 +1577,7 @@ void weston_output_update_matrix(struct weston_output *output); void weston_output_move(struct weston_output *output, int x, int y); -void -weston_output_init(struct weston_output *output, struct weston_compositor *c, - int x, int y, int width, int height, uint32_t transform, int32_t scale); + void weston_compositor_add_output(struct weston_compositor *compositor, struct weston_output *output); @@ -1810,8 +1794,8 @@ weston_output_set_transform(struct weston_output *output, uint32_t transform); void -weston_output_init_pending(struct weston_output *output, - struct weston_compositor *compositor); +weston_output_init(struct weston_output *output, + struct weston_compositor *compositor); int weston_output_enable(struct weston_output *output); -- 2.9.2 _______________________________________________ wayland-devel mailing list wayland-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/wayland-devel