From 8cfa97632f646f686ffc946a7ee59133769f1186 Mon Sep 17 00:00:00 2001
From: Hayden K <819028+mrneo240@users.noreply.github.com>
Date: Tue, 12 Mar 2019 18:12:38 -0400
Subject: [PATCH] Finalize changes to profiler

---
 GL/draw.c     |  2 ++
 GL/flush.c    |  4 ++--
 GL/profiler.c | 10 ++++++++--
 GL/profiler.h |  2 +-
 4 files changed, 13 insertions(+), 5 deletions(-)

diff --git a/GL/draw.c b/GL/draw.c
index 628ca46..a16a7ea 100644
--- a/GL/draw.c
+++ b/GL/draw.c
@@ -1239,6 +1239,8 @@ static void submitVertices(GLenum mode, GLsizei first, GLsizei count, GLenum typ
     glBlendFunc(blendSrc, blendDst);
     (blendEnabled) ? glEnable(GL_BLEND) : glDisable(GL_BLEND);
     (depthEnabled) ? glEnable(GL_DEPTH_TEST) : glDisable(GL_DEPTH_TEST);
+
+    PROFILER_POP();
 }
 
 void APIENTRY glDrawElements(GLenum mode, GLsizei count, GLenum type, const GLvoid* indices) {
diff --git a/GL/flush.c b/GL/flush.c
index 835e62a..096c73e 100644
--- a/GL/flush.c
+++ b/GL/flush.c
@@ -121,7 +121,7 @@ void APIENTRY glKosInit() {
 
 void APIENTRY glKosSwapBuffers() {
     static int frame_count = 0;
-
+    
     TRACE();
 
     PROFILER_PUSH(__func__);
@@ -152,7 +152,7 @@ void APIENTRY glKosSwapBuffers() {
     PROFILER_CHECKPOINT("scene");
     PROFILER_POP();
 
-    if(frame_count++ > 100) {
+    if(++frame_count > 49) {
         profiler_print_stats();
         frame_count = 0;
     }
diff --git a/GL/profiler.c b/GL/profiler.c
index d922b83..49d353b 100644
--- a/GL/profiler.c
+++ b/GL/profiler.c
@@ -5,6 +5,7 @@
 #include <stdio.h>
 
 #include "profiler.h"
+#include "private.h"
 #ifdef PROFILER_COMPILE
 #include "../containers/aligned_vector.h"
 
@@ -132,15 +133,20 @@ void profiler_pop() {
 void profiler_print_stats() {
     if(!PROFILER_ENABLED) return;
 
-    fprintf(stderr, "%-60s%-20s%-20s%-20s\n", "Path", "Average", "Total", "Calls");
-
+    fprintf(stderr, "%-40s%-20s%-20s%-20s%-20s\n", "Path", "Time(ms)", "Average", "Total", "Calls");
+    float total_ms = 0;
+    float fps = 0;
     uint16_t i = 0;
     for(; i < root->results.size; ++i) {
         ProfilerResult* result = aligned_vector_at(&root->results, i);
         float ms = ((float) result->total_time_us) / 1000.0f;
         float avg = ms / (float) result->total_calls;
+        total_ms += ms;
 
         fprintf(stderr, "%-60s%-20f%-20f%u\n", result->name, avg, ms, result->total_calls);
     }
+    total_ms/=((ProfilerResult*)aligned_vector_at(&root->results, i-1))->total_calls;
+    fps = 1000/total_ms;
+    fprintf(stderr, "%-10s%-10f%-10s%-10f\n", "Time(ms)", total_ms, "FPS", fps);
 }
 #endif
diff --git a/GL/profiler.h b/GL/profiler.h
index f7a6ec4..15216e8 100644
--- a/GL/profiler.h
+++ b/GL/profiler.h
@@ -3,7 +3,7 @@
 #include <stdint.h>
 
 #define PROFILER_COMPILE 1
-#ifdef PROFILER_COMPILE
+#if PROFILER_COMPILE
 #define PROFILER_PUSH(S) profiler_push(S)
 #define PROFILER_CHECKPOINT(P) profiler_checkpoint(P)
 #define PROFILER_POP() profiler_pop()