summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLaurent Pinchart <laurent.pinchart@ideasonboard.com>2013-02-27 05:35:13 +0100
committerLaurent Pinchart <laurent.pinchart@ideasonboard.com>2013-06-27 10:01:16 +0200
commit0fcb77d89e08c74b783e3b5417ddfd5ca8aafa72 (patch)
tree369f1cccb85d737ce136cfbf8b0e49fab7a8863a
parent8b8666fbbbeb4cfc6abd4c7abfb0bb8d8eb8a4d8 (diff)
modetest: Store the mode in the crtc structure
This prepares the code for the split in separate functions of CRTC and planes setup. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
-rw-r--r--tests/modetest/modetest.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/tests/modetest/modetest.c b/tests/modetest/modetest.c
index 6fbaf095..3de611e4 100644
--- a/tests/modetest/modetest.c
+++ b/tests/modetest/modetest.c
@@ -62,6 +62,7 @@ struct crtc {
drmModeCrtc *crtc;
drmModeObjectProperties *props;
drmModePropertyRes **props_info;
+ drmModeModeInfo *mode;
};
struct encoder {
@@ -524,6 +525,7 @@ static void free_resources(struct resources *res)
static struct resources *get_resources(struct device *dev)
{
struct resources *res;
+ int i;
res = malloc(sizeof *res);
if (res == 0)
@@ -598,6 +600,9 @@ static struct resources *get_resources(struct device *dev)
get_properties(res, res, crtc, CRTC);
get_properties(res, res, connector, CONNECTOR);
+ for (i = 0; i < res->res->count_crtcs; ++i)
+ res->crtcs[i].mode = &res->crtcs[i].crtc->mode;
+
res->plane_res = drmModeGetPlaneResources(dev->fd);
if (!res->plane_res) {
fprintf(stderr, "drmModeGetPlaneResources failed: %s\n",
@@ -714,6 +719,7 @@ static void connector_find_mode(struct device *dev, struct connector_arg *c)
struct crtc *crtc = &dev->resources->crtcs[i];
if (c->crtc_id == crtc->crtc->crtc_id) {
+ crtc->mode = c->mode;
c->crtc = crtc;
break;
}
@@ -884,8 +890,8 @@ set_plane(struct device *dev, struct connector_arg *c, struct plane_arg *p)
if (!p->has_position) {
/* Default to the middle of the screen */
- crtc_x = (c->mode->hdisplay - p->w) / 2;
- crtc_y = (c->mode->vdisplay - p->h) / 2;
+ crtc_x = (c->crtc->mode->hdisplay - p->w) / 2;
+ crtc_y = (c->crtc->mode->vdisplay - p->h) / 2;
} else {
crtc_x = p->x;
crtc_y = p->y;