diff options
Diffstat (limited to 'src/gallium/auxiliary')
-rw-r--r-- | src/gallium/auxiliary/hud/hud_context.c | 36 |
1 files changed, 30 insertions, 6 deletions
diff --git a/src/gallium/auxiliary/hud/hud_context.c b/src/gallium/auxiliary/hud/hud_context.c index 9dd2fbf17e5..cb7ed44659b 100644 --- a/src/gallium/auxiliary/hud/hud_context.c +++ b/src/gallium/auxiliary/hud/hud_context.c @@ -958,26 +958,50 @@ static void strcat_without_spaces(char *dst, const char *src) *dst = 0; } + +#ifdef PIPE_OS_WINDOWS +#define W_OK 0 +static int +access(const char *pathname, int mode) +{ + /* no-op */ + return 0; +} + +#define PATH_SEP "\\" + +#else + +#define PATH_SEP "/" + +#endif + + +/** + * If the GALLIUM_HUD_DUMP_DIR env var is set, we'll write the raw + * HUD values to files at ${GALLIUM_HUD_DUMP_DIR}/<stat> where <stat> + * is a HUD variable such as "fps", or "cpu" + */ static void hud_graph_set_dump_file(struct hud_graph *gr) { -#ifndef PIPE_OS_WINDOWS const char *hud_dump_dir = getenv("GALLIUM_HUD_DUMP_DIR"); - char *dump_file; if (hud_dump_dir && access(hud_dump_dir, W_OK) == 0) { - dump_file = malloc(strlen(hud_dump_dir) + sizeof("/") + sizeof(gr->name)); + char *dump_file = malloc(strlen(hud_dump_dir) + sizeof(PATH_SEP) + + sizeof(gr->name)); if (dump_file) { strcpy(dump_file, hud_dump_dir); - strcat(dump_file, "/"); + strcat(dump_file, PATH_SEP); strcat_without_spaces(dump_file, gr->name); gr->fd = fopen(dump_file, "w+"); - if (gr->fd) + if (gr->fd) { + /* flush output after each line is written */ setvbuf(gr->fd, NULL, _IOLBF, 0); + } free(dump_file); } } -#endif } /** |