openwfd: Combine native_resolution/rect/width,height into union

dev
Benjamin Franzke 14 years ago
parent 9b1f2d2e8e
commit 8e9e6264c1
  1. 30
      compositor/compositor-openwfd.c

@ -70,6 +70,15 @@ struct wfd_output {
uint32_t current;
};
union wfd_geometry {
struct {
WFDint x, y;
WFDint width, height;
} g;
WFDint array[4];
};
static int
wfd_output_prepare_render(struct wlsc_output *output_base)
{
@ -211,9 +220,7 @@ create_output_for_port(struct wfd_compositor *ec,
int i;
WFDint num_pipelines, *pipelines;
WFDint num_modes;
WFDint rect[4] = { 0, 0, 0, 0 };
int width, height;
WFDint native_resolution[2];
union wfd_geometry geometry;
struct wfd_mode *mode;
WFDPortMode *modes;
WFDfloat physical_size[2];
@ -223,6 +230,7 @@ create_output_for_port(struct wfd_compositor *ec,
return -1;
memset(output, 0, sizeof *output);
memset(&geometry, 0, sizeof geometry);
output->port = port;
wl_list_init(&output->base.mode_list);
@ -249,18 +257,16 @@ create_output_for_port(struct wfd_compositor *ec,
wfdGetPortAttribiv(ec->dev, output->port,
WFD_PORT_NATIVE_RESOLUTION,
2, native_resolution);
width = native_resolution[0];
height = native_resolution[1];
2, &geometry.array[2]);
output->base.current = NULL;
wl_list_for_each(mode, &output->base.mode_list, base.link) {
if (mode->base.width == width && mode->base.height == height) {
if (mode->base.width == geometry.g.width &&
mode->base.height == geometry.g.height) {
output->base.current = &mode->base;
break;
}
}
if (output->base.current == NULL) {
fprintf(stderr, "failed to find a native mode\n");
goto cleanup_port;
@ -348,12 +354,12 @@ create_output_for_port(struct wfd_compositor *ec,
GL_RENDERBUFFER,
output->rbo[output->current]);
rect[2] = width;
rect[3] = height;
wfdSetPipelineAttribiv(ec->dev, output->pipeline,
WFD_PIPELINE_SOURCE_RECTANGLE, 4, rect);
WFD_PIPELINE_SOURCE_RECTANGLE,
4, geometry.array);
wfdSetPipelineAttribiv(ec->dev, output->pipeline,
WFD_PIPELINE_DESTINATION_RECTANGLE, 4, rect);
WFD_PIPELINE_DESTINATION_RECTANGLE,
4, geometry.array);
wfdBindSourceToPipeline(ec->dev, output->pipeline,
output->source[output->current ^ 1],

Loading…
Cancel
Save