From 97946042ed941d902b82a49cbc8c8e38cae6155f Mon Sep 17 00:00:00 2001 From: Mattias Andrée Date: Tue, 3 Jun 2014 05:21:46 +0200 Subject: test: m + select crtc MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Mattias Andrée --- src/test/test.c | 131 +++++++++++++++++++++++++++++++++++++++++++++++--------- 1 file 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 #include #include +#include #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; } -- cgit v1.2.3-70-g09d2