diff options
Diffstat (limited to 'chromium/third_party/skia/experimental/LightSymbolsUtil/lightsymbols/helper.h')
-rw-r--r-- | chromium/third_party/skia/experimental/LightSymbolsUtil/lightsymbols/helper.h | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/chromium/third_party/skia/experimental/LightSymbolsUtil/lightsymbols/helper.h b/chromium/third_party/skia/experimental/LightSymbolsUtil/lightsymbols/helper.h new file mode 100644 index 00000000000..62f375a396a --- /dev/null +++ b/chromium/third_party/skia/experimental/LightSymbolsUtil/lightsymbols/helper.h @@ -0,0 +1,65 @@ +#include <stdlib.h> +#define CANVAS_PATH "CANVAS_PATH" + +class SkFile { + FILE* file; + bool busted; + char* sz; + mutable int i; + +public: + SkFile(unsigned long id) { + file = NULL; + busted = false; + sz = new char[100000]; + set(id); + i = 100; + } + + ~SkFile() { + delete sz; + if (file) { + fclose(file); + } + } + + void set(unsigned long id) { + if (busted) { + return; + } + + if (file == NULL) { + char sz[10000]; + sprintf(sz, "%s\\%ul.callstacks.txt", getenv(CANVAS_PATH), id); + file = fopen(sz, "a"); + if (file == NULL) { + busted = true; + } + fprintf(file, "\n\n\nNEW SESSION, just coliding ids ... should generate a new file ideally ... \n\n\n"); + } + } + + void appendLine(const char* sz) const { + if (busted) { + return; + } + + fprintf(file, "%s\n", sz); + } + + void dump(bool flush = false) const { + if (busted) { + return; + } + + LightSymbol::GetCallStack(sz, 100000, " >- "); + appendLine(sz); + + i--; + + if (i < 0 || flush) { + i = 100; + fflush(file); + } + } +}; |