diff options
author | Mattias Andrée <maandree@operamail.com> | 2014-06-03 05:21:46 +0200 |
---|---|---|
committer | Mattias Andrée <maandree@operamail.com> | 2014-06-03 05:21:54 +0200 |
commit | 97946042ed941d902b82a49cbc8c8e38cae6155f (patch) | |
tree | 63d0f413c2867c8d1f2e90db1acdca65eb10f54d /src | |
parent | m (diff) | |
download | libgamma-97946042ed941d902b82a49cbc8c8e38cae6155f.tar.gz libgamma-97946042ed941d902b82a49cbc8c8e38cae6155f.tar.bz2 libgamma-97946042ed941d902b82a49cbc8c8e38cae6155f.tar.xz |
test: m + select crtc
Signed-off-by: Mattias Andrée <maandree@operamail.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/test/test.c | 131 |
1 files changed, 111 insertions, 20 deletions
diff --git a/src/test/test.c b/src/test/test.c index 79672c2..f5f5c42 100644 --- a/src/test/test.c +++ b/src/test/test.c @@ -20,6 +20,7 @@ #include <stdio.h> #include <stdlib.h> #include <errno.h> +#include <string.h> #if LIBGAMMA_ERROR_MIN < -46 @@ -100,31 +101,46 @@ static void method_availability(void) } +static void list_default_sites(void) +{ + int method; + for (method = 0; method < LIBGAMMA_METHOD_COUNT; method++) + if (libgamma_is_method_available(method)) + { + printf("Default site for %s:\n", method_name(method)); + printf(" Variable: %s\n", libgamma_method_default_site_variable(method)); + printf(" Site name: %s\n", libgamma_method_default_site(method)); + printf("\n"); + } +} + + static void method_capabilities(void) { libgamma_method_capabilities_t caps; int method; for (method = 0; method < LIBGAMMA_METHOD_COUNT; method++) - { - printf("Capabilities of %s:\n", method_name(method)); - libgamma_method_capabilities(&caps, method); - - printf(" %s: %X\n", "CRTC information", caps.crtc_information); - printf(" %s: %s\n", "Default site known", caps.default_site_known ? "yes" : "no"); - printf(" %s: %s\n", "Multiple sites", caps.multiple_sites ? "yes" : "no"); - printf(" %s: %s\n", "Multiple partitions", caps.multiple_partitions ? "yes" : "no"); - printf(" %s: %s\n", "Multiple crtcs", caps.multiple_crtcs ? "yes" : "no"); - printf(" %s: %s\n", "Graphics cards", caps.partitions_are_graphics_cards ? "yes" : "no"); - printf(" %s: %s\n", "Site restore", caps.site_restore ? "yes" : "no"); - printf(" %s: %s\n", "Partition restore", caps.partition_restore ? "yes" : "no"); - printf(" %s: %s\n", "CRTC restore", caps.crtc_restore ? "yes" : "no"); - printf(" %s: %s\n", "Identical gamma sizes", caps.identical_gamma_sizes ? "yes" : "no"); - printf(" %s: %s\n", "Fixed gamma size", caps.fixed_gamma_size ? "yes" : "no"); - printf(" %s: %s\n", "Fixed gamma depth", caps.fixed_gamma_depth ? "yes" : "no"); - printf(" %s: %s\n", "Real method", caps.real ? "yes" : "no"); - printf(" %s: %s\n", "Fake method", caps.fake ? "yes" : "no"); - printf("\n"); - } + if (libgamma_is_method_available(method)) + { + printf("Capabilities of %s:\n", method_name(method)); + libgamma_method_capabilities(&caps, method); + + printf(" %s: %X\n", "CRTC information", caps.crtc_information); + printf(" %s: %s\n", "Default site known", caps.default_site_known ? "yes" : "no"); + printf(" %s: %s\n", "Multiple sites", caps.multiple_sites ? "yes" : "no"); + printf(" %s: %s\n", "Multiple partitions", caps.multiple_partitions ? "yes" : "no"); + printf(" %s: %s\n", "Multiple crtcs", caps.multiple_crtcs ? "yes" : "no"); + printf(" %s: %s\n", "Graphics cards", caps.partitions_are_graphics_cards ? "yes" : "no"); + printf(" %s: %s\n", "Site restore", caps.site_restore ? "yes" : "no"); + printf(" %s: %s\n", "Partition restore", caps.partition_restore ? "yes" : "no"); + printf(" %s: %s\n", "CRTC restore", caps.crtc_restore ? "yes" : "no"); + printf(" %s: %s\n", "Identical gamma sizes", caps.identical_gamma_sizes ? "yes" : "no"); + printf(" %s: %s\n", "Fixed gamma size", caps.fixed_gamma_size ? "yes" : "no"); + printf(" %s: %s\n", "Fixed gamma depth", caps.fixed_gamma_depth ? "yes" : "no"); + printf(" %s: %s\n", "Real method", caps.real ? "yes" : "no"); + printf(" %s: %s\n", "Fake method", caps.fake ? "yes" : "no"); + printf("\n"); + } } @@ -161,11 +177,86 @@ static void error_test(void) int main(void) { + int method; + char* site; + char* tmp; + char buf[256]; + libgamma_site_state_t site_state; + libgamma_partition_state_t part_state; + libgamma_crtc_state_t crtc_state; + int r; + list_methods_lists(); method_availability(); + list_default_sites(); method_capabilities(); error_test(); + printf("Select adjustment method:\n"); + for (method = 0; method < LIBGAMMA_METHOD_COUNT; method++) + printf(" %i: %s\n", method, method_name(method)); + printf("> "); + fflush(stdout); + fgets(buf, sizeof(buf) / sizeof(char), stdin); + method = atoi(buf); + + printf("Select site: "); + fflush(stdout); + fgets(buf, sizeof(buf) / sizeof(char), stdin); + tmp = strchr(buf, '\n'); + if (tmp != NULL) + *tmp = '\0'; + if (buf[0] == '\0') + site = NULL; + else + { + site = malloc((strlen(buf) + 1) * sizeof(char)); + memcpy(site, buf, strlen(buf) + 1); + } + + if ((r = libgamma_site_initialise(&site_state, method, site))) + { + free(site); + return libgamma_perror("error", r), 1; + } + + if (site_state.partitions_available == 0) + { + libgamma_site_destroy(&site_state); + return printf("No partitions found\n"), 1; + } + + printf("Select partition [0, %lu]: ", site_state.partitions_available - 1); + fflush(stdout); + fgets(buf, sizeof(buf) / sizeof(char), stdin); + + if ((r = libgamma_partition_initialise(&part_state, &site_state, (size_t)atoll(buf)))) + { + libgamma_site_destroy(&site_state); + return libgamma_perror("error", r), 1; + } + + if (part_state.crtcs_available == 0) + { + libgamma_partition_destroy(&part_state); + libgamma_site_destroy(&site_state); + return printf("No CRTC:s found\n"), 1; + } + + printf("Select CRTC [0, %lu]: ", part_state.crtcs_available - 1); + fflush(stdout); + fgets(buf, sizeof(buf) / sizeof(char), stdin); + + if ((r = libgamma_crtc_initialise(&crtc_state, &part_state, (size_t)atoll(buf)))) + { + libgamma_partition_destroy(&part_state); + libgamma_site_destroy(&site_state); + return libgamma_perror("error", r), 1; + } + + libgamma_crtc_destroy(&crtc_state); + libgamma_partition_destroy(&part_state); + libgamma_site_destroy(&site_state); return 0; } |