From 815febd7989f320a3f8f803485549c012f2ff0d3 Mon Sep 17 00:00:00 2001 From: Mattias Andrée Date: Sun, 1 Jun 2014 06:49:58 +0200 Subject: m + doc MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Mattias Andrée --- src/lib/gamma-linux-drm.c | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) (limited to 'src/lib/gamma-linux-drm.c') diff --git a/src/lib/gamma-linux-drm.c b/src/lib/gamma-linux-drm.c index 3c421e7..b97f94d 100644 --- a/src/lib/gamma-linux-drm.c +++ b/src/lib/gamma-linux-drm.c @@ -140,14 +140,17 @@ int libgamma_linux_drm_site_initialise(libgamma_site_state_t* restrict this, return LIBGAMMA_NO_SUCH_SITE; /* Count the number of available graphics cards by - stat:ing there existence in an API filesystem. */ + `stat`:ing their existence in an API filesystem. */ this->partitions_available = 0; for (;;) { + /* Construct pathname of graphics card device. */ snprintf(pathname, sizeof(pathname) / sizeof(char), DRM_DEV_NAME, DRM_DIR_NAME, (int)(this->partitions_available)); + /* `stat` the graphics card's existence. */ if (stat(pathname, &_attr)) break; + /* Move on to next graphics card. */ if (this->partitions_available++ > INT_MAX) return LIBGAMMA_IMPOSSIBLE_AMOUNT; } @@ -297,12 +300,9 @@ int libgamma_linux_drm_partition_initialise(libgamma_partition_state_t* restrict this->crtcs_available = (size_t)(data->res->count_crtcs); return 0; - fail_res: - drmModeFreeResources(data->res); - fail_fd: - close(data->fd); - fail_data: - free(data); + fail_res: drmModeFreeResources(data->res); + fail_fd: close(data->fd); + fail_data: free(data); return rc; } @@ -763,10 +763,12 @@ int libgamma_linux_drm_crtc_get_gamma_ramps(libgamma_crtc_state_t* restrict this libgamma_drm_card_data_t* restrict card = this->partition->data; int r; #ifdef DEBUG + /* Gamma ramp sizes are identical but not fixed. */ if ((ramps->red_size != ramps->green_size) || (ramps->red_size != ramps->blue_size)) return LIBGAMMA_MIXED_GAMMA_RAMP_SIZE; #endif + /* Read current gamma ramps. */ r = drmModeCrtcGetGamma(card->fd, (uint32_t)(size_t)(this->data), (uint32_t)(ramps->red_size), ramps->red, ramps->green, ramps->blue); return r ? LIBGAMMA_GAMMA_RAMP_READ_FAILED : 0; @@ -787,12 +789,16 @@ int libgamma_linux_drm_crtc_set_gamma_ramps(libgamma_crtc_state_t* restrict this libgamma_drm_card_data_t* restrict card = this->partition->data; int r; #ifdef DEBUG + /* Gamma ramp sizes are identical but not fixed. */ if ((ramps.red_size != ramps.green_size) || (ramps.red_size != ramps.blue_size)) return LIBGAMMA_MIXED_GAMMA_RAMP_SIZE; #endif + + /* Apply gamma ramps. */ r = drmModeCrtcSetGamma(card->fd, (uint32_t)(size_t)(this->data), (uint32_t)(ramps.red_size), ramps.red, ramps.green, ramps.blue); + /* Check for errors. */ if (r) switch (errno) { -- cgit v1.2.3-70-g09d2