diff --git a/clients/weston-info.c b/clients/weston-info.c index 712346a0..c07134d1 100644 --- a/clients/weston-info.c +++ b/clients/weston-info.c @@ -30,6 +30,8 @@ #include #include #include +#include +#include #include @@ -240,9 +242,33 @@ print_output_info(void *data) } } +static char +bits2graph(uint32_t value, unsigned bitoffset) +{ + int c = (value >> bitoffset) & 0xff; + + if (isgraph(c) || isspace(c)) + return c; + + return '?'; +} + +static void +fourcc2str(uint32_t format, char *str, int len) +{ + int i; + + assert(len >= 5); + + for (i = 0; i < 4; i++) + str[i] = bits2graph(format, i * 8); + str[i] = '\0'; +} + static void print_shm_info(void *data) { + char str[5]; struct shm_info *shm = data; struct shm_format *format; @@ -262,7 +288,8 @@ print_shm_info(void *data) printf(" RGB565"); break; default: - printf(" unknown(%08x)", format->format); + fourcc2str(format->format, str, sizeof(str)); + printf(" '%s'(0x%08x)", str, format->format); break; }