diff options
author | Mattias Andrée <maandree@operamail.com> | 2014-06-01 06:49:58 +0200 |
---|---|---|
committer | Mattias Andrée <maandree@operamail.com> | 2014-06-01 06:49:58 +0200 |
commit | 815febd7989f320a3f8f803485549c012f2ff0d3 (patch) | |
tree | b0287098d3c6e12ddd21b98fbc2f02a0514e46db /src/lib/gamma-linux-drm.c | |
parent | Use macros for CRTC information fields (diff) | |
download | libgamma-815febd7989f320a3f8f803485549c012f2ff0d3.tar.gz libgamma-815febd7989f320a3f8f803485549c012f2ff0d3.tar.bz2 libgamma-815febd7989f320a3f8f803485549c012f2ff0d3.tar.xz |
m + doc
Signed-off-by: Mattias Andrée <maandree@operamail.com>
Diffstat (limited to '')
-rw-r--r-- | src/lib/gamma-linux-drm.c | 20 |
1 files changed, 13 insertions, 7 deletions
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) { |