|
|
|
@@ -9,9 +9,9 @@ swwPerfMonitor *swwPerfMonitor_CreateWithCount(uint32_t value_count) { |
|
|
|
swwPerfMonitor *o = (swwPerfMonitor *)malloc(sizeof(swwPerfMonitor) + |
|
|
|
sizeof(float) * value_count); |
|
|
|
o->cursor = 0; |
|
|
|
o->count = 0; |
|
|
|
o->count = 1; |
|
|
|
o->capacity = value_count; |
|
|
|
o->average_value = 0.f; |
|
|
|
o->sum = 0.000001f; |
|
|
|
memset(o->values, 0, sizeof(float) * value_count); |
|
|
|
|
|
|
|
return o; |
|
|
|
@@ -21,16 +21,18 @@ void swwPerfMonitor_Destroy(swwPerfMonitor *o) { free(o); } |
|
|
|
|
|
|
|
void swwPerfMonitor_Update(swwPerfMonitor *o, float frame_time) { |
|
|
|
float prev = 0.f; |
|
|
|
if (o->count <= o->capacity) { |
|
|
|
o->count++; |
|
|
|
} else { |
|
|
|
prev = o->values[o->cursor]; |
|
|
|
if (o->count == o->capacity) { |
|
|
|
prev = o->values[(o->cursor + 1) % o->capacity]; |
|
|
|
} |
|
|
|
|
|
|
|
o->cursor = (o->cursor + 1) % o->capacity; |
|
|
|
o->values[o->cursor] = frame_time; |
|
|
|
|
|
|
|
o->average_value += (frame_time - prev) / o->count; |
|
|
|
o->sum += frame_time - prev; |
|
|
|
|
|
|
|
if (o->count < o->capacity) { |
|
|
|
o->count++; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
void swwPerfMonitor_Render(swwPerfMonitor *o, swwRenderer *renderer, Point2i c, |
|
|
|
@@ -62,5 +64,4 @@ void swwPerfMonitor_Render(swwPerfMonitor *o, swwRenderer *renderer, Point2i c, |
|
|
|
(Point2i){minx + w, MAX(maxy - pv, miny)}, kFgColor); |
|
|
|
} |
|
|
|
} |
|
|
|
// printf("idx: %d, w: %d\n", idx, minx + w); |
|
|
|
} |