From dfa821d4c0378b0c9ed5deabd1fd06c1afff9d35 Mon Sep 17 00:00:00 2001 From: Philipp Zabel Date: Tue, 18 Apr 2023 13:45:02 +0200 Subject: backend-pipewire: pass backend to weston_pipewire_output_api::create_head() Pass the backend instead of the compositor to the PipeWire output API create_head() method and increment the API version. That way the backend will not have to find the backend pointer from the compositor. This is trivial now, but in the multi-backend case would entail iterating over all backends to find the correct one. Signed-off-by: Philipp Zabel --- include/libweston/backend-pipewire.h | 6 +++--- libweston/backend-pipewire/pipewire.c | 16 ++++++++-------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/include/libweston/backend-pipewire.h b/include/libweston/backend-pipewire.h index 749f1664..f8fe3777 100644 --- a/include/libweston/backend-pipewire.h +++ b/include/libweston/backend-pipewire.h @@ -33,7 +33,7 @@ extern "C" { #include #include -#define WESTON_PIPEWIRE_OUTPUT_API_NAME "weston_pipewire_output_api_v1" +#define WESTON_PIPEWIRE_OUTPUT_API_NAME "weston_pipewire_output_api_v2" struct pipewire_config { int32_t width; @@ -44,13 +44,13 @@ struct pipewire_config { struct weston_pipewire_output_api { /** Create a new PipeWire head. * - * \param compositor The compositor instance. + * \param backend The backend. * \param name Desired name for the new head * \param config The pipewire_config of the new head. * * Returns 0 on success, -1 on failure. */ - void (*head_create)(struct weston_compositor *compositor, + void (*head_create)(struct weston_backend *backend, const char *name, const struct pipewire_config *config); diff --git a/libweston/backend-pipewire/pipewire.c b/libweston/backend-pipewire/pipewire.c index da0abe04..1e7ac06d 100644 --- a/libweston/backend-pipewire/pipewire.c +++ b/libweston/backend-pipewire/pipewire.c @@ -150,9 +150,9 @@ pipewire_output_debug(struct pipewire_output *output, const char *fmt, ...) } static inline struct pipewire_backend * -to_pipewire_backend(struct weston_compositor *base) +to_pipewire_backend(struct weston_backend *base) { - return container_of(base->backend, struct pipewire_backend, base); + return container_of(base, struct pipewire_backend, base); } static void @@ -535,10 +535,10 @@ pipewire_destroy(struct weston_backend *base) } static void -pipewire_head_create(struct weston_compositor *compositor, const char *name, +pipewire_head_create(struct weston_backend *backend, const char *name, const struct pipewire_config *config) { - struct pipewire_backend *b = to_pipewire_backend(compositor); + struct pipewire_backend *b = to_pipewire_backend(backend); struct pipewire_head *head; struct weston_head *base; @@ -554,7 +554,7 @@ pipewire_head_create(struct weston_compositor *compositor, const char *name, base->backend = &b->base; weston_head_set_connection_status(base, true); - weston_compositor_add_head(compositor, base); + weston_compositor_add_head(b->compositor, base); } static void @@ -885,7 +885,7 @@ err_loop: } static void -pipewire_backend_create_outputs(struct weston_compositor *compositor, +pipewire_backend_create_outputs(struct pipewire_backend *backend, int num_outputs) { char name[32] = "pipewire"; @@ -894,7 +894,7 @@ pipewire_backend_create_outputs(struct weston_compositor *compositor, for (i = 0; i < num_outputs; i++) { if (num_outputs > 1) snprintf(name, sizeof name, "pipewire-%u", i); - pipewire_head_create(compositor, name, &default_config); + pipewire_head_create(&backend->base, name, &default_config); } } @@ -951,7 +951,7 @@ pipewire_backend_create(struct weston_compositor *compositor, pixel_format_get_info(DRM_FORMAT_XRGB8888), &backend->pixel_format); - pipewire_backend_create_outputs(compositor, config->num_outputs); + pipewire_backend_create_outputs(backend, config->num_outputs); return backend; -- cgit v1.2.1