summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenjamin Franzke <benjaminfranzke@googlemail.com>2011-06-24 13:43:08 +0200
committerBenjamin Franzke <benjaminfranzke@googlemail.com>2011-06-24 13:43:08 +0200
commit8e9e6264c1ed68e8c3f4e7e6534f4c9b245fb358 (patch)
tree43a50e4d1eb037a560dd5151b4939ca336acd599
parent9b1f2d2e8ede3fb5a9789004d397bcea68e46445 (diff)
openwfd: Combine native_resolution/rect/width,height into union
-rw-r--r--compositor/compositor-openwfd.c30
1 files changed, 18 insertions, 12 deletions
diff --git a/compositor/compositor-openwfd.c b/compositor/compositor-openwfd.c
index 422a38b..f2cc844 100644
--- a/compositor/compositor-openwfd.c
+++ b/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],