mirror of
https://gitlab.freedesktop.org/wayland/weston.git
synced 2026-01-06 10:50:18 +01:00
backend-pipewire: move pixman renderbuffer creation to helper
Extract the pixman renderbuffer configuration from the add_buffer function into a helper function to simplify the addition of the GL renderer. Signed-off-by: Michael Tretter <m.tretter@pengutronix.de>
This commit is contained in:
parent
7155d00929
commit
b5854ff95d
1 changed files with 21 additions and 14 deletions
|
|
@ -433,34 +433,41 @@ pipewire_output_stream_param_changed(void *data, uint32_t id,
|
|||
pw_stream_update_params(output->stream, params, 2);
|
||||
}
|
||||
|
||||
static void
|
||||
pipewire_output_stream_add_buffer(void *data, struct pw_buffer *buffer)
|
||||
static struct weston_renderbuffer *
|
||||
pipewire_output_stream_add_buffer_pixman(struct pipewire_output *output,
|
||||
struct pw_buffer *buffer)
|
||||
{
|
||||
struct pipewire_output *output = data;
|
||||
struct weston_compositor *ec = output->base.compositor;
|
||||
const struct pixman_renderer_interface *pixman = ec->renderer->pixman;
|
||||
struct pipewire_frame_data *frame_data;
|
||||
const struct weston_renderer *renderer = ec->renderer;
|
||||
const struct pixel_format_info *format;
|
||||
unsigned int width;
|
||||
unsigned int height;
|
||||
unsigned int stride;
|
||||
void *ptr;
|
||||
|
||||
pipewire_output_debug(output, "add buffer: %p", buffer);
|
||||
|
||||
frame_data = xzalloc(sizeof *frame_data);
|
||||
buffer->user_data = frame_data;
|
||||
|
||||
format = output->pixel_format;
|
||||
width = output->base.width;
|
||||
height = output->base.height;
|
||||
stride = width * format->bpp / 8;
|
||||
ptr = buffer->buffer->datas[0].data;
|
||||
|
||||
frame_data->renderbuffer = pixman->create_image_from_ptr(&output->base,
|
||||
format, width,
|
||||
height, ptr,
|
||||
stride);
|
||||
return renderer->pixman->create_image_from_ptr(&output->base,
|
||||
format, width, height,
|
||||
ptr, stride);
|
||||
}
|
||||
|
||||
static void
|
||||
pipewire_output_stream_add_buffer(void *data, struct pw_buffer *buffer)
|
||||
{
|
||||
struct pipewire_output *output = data;
|
||||
struct pipewire_frame_data *frame_data;
|
||||
|
||||
pipewire_output_debug(output, "add buffer: %p", buffer);
|
||||
|
||||
frame_data = xzalloc(sizeof *frame_data);
|
||||
buffer->user_data = frame_data;
|
||||
|
||||
frame_data->renderbuffer = pipewire_output_stream_add_buffer_pixman(output, buffer);
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue