From c4db6f762922d76ca200fa4f392c736a3ad9c104 Mon Sep 17 00:00:00 2001 From: Pekka Paalanen Date: Tue, 5 Sep 2017 16:37:03 +0300 Subject: [PATCH] compositor-drm: factor out drm_output_init_gamma_size() Move this bit of code into its own function. The caller of this already cluttered and origcrtc is not used for anything else. Signed-off-by: Pekka Paalanen Reviewed-by: Ian Ray Reviewed-by: Daniel Stone --- libweston/compositor-drm.c | 30 ++++++++++++++++++++++-------- 1 file changed, 22 insertions(+), 8 deletions(-) diff --git a/libweston/compositor-drm.c b/libweston/compositor-drm.c index e3043b2e..ab473e4f 100644 --- a/libweston/compositor-drm.c +++ b/libweston/compositor-drm.c @@ -4574,6 +4574,25 @@ drm_output_set_seat(struct weston_output *base, seat ? seat : ""); } +static int +drm_output_init_gamma_size(struct drm_output *output) +{ + struct drm_backend *backend = to_drm_backend(output->base.compositor); + drmModeCrtc *crtc; + + assert(output->base.compositor); + assert(output->crtc_id != 0); + crtc = drmModeGetCrtc(backend->drm.fd, output->crtc_id); + if (!crtc) + return -1; + + output->base.gamma_size = crtc->gamma_size; + + drmModeFreeCrtc(crtc); + + return 0; +} + static int drm_output_enable(struct weston_output *base) { @@ -4830,7 +4849,6 @@ create_output_for_connector(struct drm_backend *b, const char *make = "unknown"; const char *model = "unknown"; const char *serial_number = "unknown"; - drmModeCrtcPtr origcrtc; int i; i = find_crtc_for_connector(b, resources, connector); @@ -4859,13 +4877,6 @@ create_output_for_connector(struct drm_backend *b, output->base.destroy = drm_output_destroy; output->base.disable = drm_output_disable; - origcrtc = drmModeGetCrtc(b->drm.fd, output->crtc_id); - if (origcrtc == NULL) - goto err_output; - - output->base.gamma_size = origcrtc->gamma_size; - drmModeFreeCrtc(origcrtc); - output->destroy_pending = 0; output->disable_pending = 0; @@ -4900,6 +4911,9 @@ create_output_for_connector(struct drm_backend *b, output->connector->connector_type == DRM_MODE_CONNECTOR_eDP) output->base.connection_internal = true; + if (drm_output_init_gamma_size(output) < 0) + goto err_output; + output->state_cur = drm_output_state_alloc(output, NULL); output->base.mm_width = output->connector->mmWidth;