summaryrefslogtreecommitdiffstats
path: root/chromium/third_party/skia/experimental/LightSymbolsUtil/lightsymbols/helper.h
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/third_party/skia/experimental/LightSymbolsUtil/lightsymbols/helper.h')
-rw-r--r--chromium/third_party/skia/experimental/LightSymbolsUtil/lightsymbols/helper.h65
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);
+ }
+ }
+};