mirror of
https://github.com/gnif/LookingGlass.git
synced 2025-05-05 06:01:11 +00:00
[client] overlay/graphs: allow the graph to have a custom title format
This commit is contained in:
parent
42ed0d7638
commit
464fee3e20
@ -86,7 +86,8 @@ bool waylandPresentationInit(void)
|
|||||||
if (wlWm.presentation)
|
if (wlWm.presentation)
|
||||||
{
|
{
|
||||||
wlWm.photonTimings = ringbuffer_new(256, sizeof(float));
|
wlWm.photonTimings = ringbuffer_new(256, sizeof(float));
|
||||||
wlWm.photonGraph = app_registerGraph("PHOTON", wlWm.photonTimings, 0.0f, 30.0f);
|
wlWm.photonGraph = app_registerGraph("PHOTON", wlWm.photonTimings,
|
||||||
|
0.0f, 30.0f, NULL);
|
||||||
wp_presentation_add_listener(wlWm.presentation, &presentationListener, NULL);
|
wp_presentation_add_listener(wlWm.presentation, &presentationListener, NULL);
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
|
@ -110,8 +110,11 @@ void app_invalidateOverlay(bool renderTwice);
|
|||||||
|
|
||||||
struct OverlayGraph;
|
struct OverlayGraph;
|
||||||
typedef struct OverlayGraph * GraphHandle;
|
typedef struct OverlayGraph * GraphHandle;
|
||||||
|
typedef const char * (*GraphFormatFn)(const char * name,
|
||||||
|
float min, float max, float avg, float freq, float last);
|
||||||
|
|
||||||
GraphHandle app_registerGraph(const char * name, RingBuffer buffer, float min, float max);
|
GraphHandle app_registerGraph(const char * name, RingBuffer buffer,
|
||||||
|
float min, float max, GraphFormatFn formatFn);
|
||||||
void app_unregisterGraph(GraphHandle handle);
|
void app_unregisterGraph(GraphHandle handle);
|
||||||
|
|
||||||
void app_overlayConfigRegister(const char * title,
|
void app_overlayConfigRegister(const char * title,
|
||||||
|
@ -258,7 +258,8 @@ static bool egl_create(LG_Renderer ** renderer, const LG_RendererParams params,
|
|||||||
this->desktopDamage[0].count = -1;
|
this->desktopDamage[0].count = -1;
|
||||||
|
|
||||||
this->importTimings = ringbuffer_new(256, sizeof(float));
|
this->importTimings = ringbuffer_new(256, sizeof(float));
|
||||||
this->importGraph = app_registerGraph("IMPORT", this->importTimings, 0.0f, 5.0f);
|
this->importGraph = app_registerGraph("IMPORT", this->importTimings,
|
||||||
|
0.0f, 5.0f, NULL);
|
||||||
|
|
||||||
*needsOpenGL = false;
|
*needsOpenGL = false;
|
||||||
return true;
|
return true;
|
||||||
|
@ -695,9 +695,10 @@ void app_releaseAllKeybinds(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
GraphHandle app_registerGraph(const char * name, RingBuffer buffer, float min, float max)
|
GraphHandle app_registerGraph(const char * name, RingBuffer buffer,
|
||||||
|
float min, float max, GraphFormatFn formatFn)
|
||||||
{
|
{
|
||||||
return overlayGraph_register(name, buffer, min, max);
|
return overlayGraph_register(name, buffer, min, max, formatFn);
|
||||||
}
|
}
|
||||||
|
|
||||||
void app_unregisterGraph(GraphHandle handle)
|
void app_unregisterGraph(GraphHandle handle)
|
||||||
|
@ -1031,9 +1031,9 @@ static int lg_run(void)
|
|||||||
g_state.renderTimings = ringbuffer_new(256, sizeof(float));
|
g_state.renderTimings = ringbuffer_new(256, sizeof(float));
|
||||||
g_state.uploadTimings = ringbuffer_new(256, sizeof(float));
|
g_state.uploadTimings = ringbuffer_new(256, sizeof(float));
|
||||||
g_state.renderDuration = ringbuffer_new(256, sizeof(float));
|
g_state.renderDuration = ringbuffer_new(256, sizeof(float));
|
||||||
overlayGraph_register("FRAME" , g_state.renderTimings , 0.0f, 50.0f);
|
overlayGraph_register("FRAME" , g_state.renderTimings , 0.0f, 50.0f, NULL);
|
||||||
overlayGraph_register("UPLOAD", g_state.uploadTimings , 0.0f, 50.0f);
|
overlayGraph_register("UPLOAD", g_state.uploadTimings , 0.0f, 50.0f, NULL);
|
||||||
overlayGraph_register("RENDER", g_state.renderDuration, 0.0f, 10.0f);
|
overlayGraph_register("RENDER", g_state.renderDuration, 0.0f, 10.0f, NULL);
|
||||||
|
|
||||||
initImGuiKeyMap(g_state.io->KeyMap);
|
initImGuiKeyMap(g_state.io->KeyMap);
|
||||||
|
|
||||||
|
@ -41,6 +41,7 @@ struct OverlayGraph
|
|||||||
bool enabled;
|
bool enabled;
|
||||||
float min;
|
float min;
|
||||||
float max;
|
float max;
|
||||||
|
GraphFormatFn formatFn;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@ -93,6 +94,7 @@ struct BufferMetrics
|
|||||||
float sum;
|
float sum;
|
||||||
float avg;
|
float avg;
|
||||||
float freq;
|
float freq;
|
||||||
|
float last;
|
||||||
};
|
};
|
||||||
|
|
||||||
static bool rbCalcMetrics(int index, void * value_, void * udata_)
|
static bool rbCalcMetrics(int index, void * value_, void * udata_)
|
||||||
@ -115,6 +117,7 @@ static bool rbCalcMetrics(int index, void * value_, void * udata_)
|
|||||||
udata->max = *value;
|
udata->max = *value;
|
||||||
|
|
||||||
udata->sum += *value;
|
udata->sum += *value;
|
||||||
|
udata->last = *value;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -170,10 +173,18 @@ static int graphs_render(void * udata, bool interactive,
|
|||||||
metrics.freq = 1000.0f / metrics.avg;
|
metrics.freq = 1000.0f / metrics.avg;
|
||||||
}
|
}
|
||||||
|
|
||||||
char title[64];
|
const char * title;
|
||||||
snprintf(title, sizeof(title),
|
if (graph->formatFn)
|
||||||
|
title = graph->formatFn(graph->name,
|
||||||
|
metrics.min, metrics.max, metrics.avg, metrics.freq, metrics.last);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
static char _title[64];
|
||||||
|
snprintf(_title, sizeof(_title),
|
||||||
"%s: min:%4.2f max:%4.2f avg:%4.2f/%4.2fHz",
|
"%s: min:%4.2f max:%4.2f avg:%4.2f/%4.2fHz",
|
||||||
graph->name, metrics.min, metrics.max, metrics.avg, metrics.freq);
|
graph->name, metrics.min, metrics.max, metrics.avg, metrics.freq);
|
||||||
|
title = _title;
|
||||||
|
}
|
||||||
|
|
||||||
igPlotLines_FloatPtr(
|
igPlotLines_FloatPtr(
|
||||||
"",
|
"",
|
||||||
@ -201,7 +212,8 @@ struct LG_OverlayOps LGOverlayGraphs =
|
|||||||
.render = graphs_render
|
.render = graphs_render
|
||||||
};
|
};
|
||||||
|
|
||||||
GraphHandle overlayGraph_register(const char * name, RingBuffer buffer, float min, float max)
|
GraphHandle overlayGraph_register(const char * name, RingBuffer buffer,
|
||||||
|
float min, float max, GraphFormatFn formatFn)
|
||||||
{
|
{
|
||||||
struct OverlayGraph * graph = malloc(sizeof(*graph));
|
struct OverlayGraph * graph = malloc(sizeof(*graph));
|
||||||
graph->name = name;
|
graph->name = name;
|
||||||
@ -209,6 +221,7 @@ GraphHandle overlayGraph_register(const char * name, RingBuffer buffer, float mi
|
|||||||
graph->enabled = true;
|
graph->enabled = true;
|
||||||
graph->min = min;
|
graph->min = min;
|
||||||
graph->max = max;
|
graph->max = max;
|
||||||
|
graph->formatFn = formatFn;
|
||||||
ll_push(gs.graphs, graph);
|
ll_push(gs.graphs, graph);
|
||||||
return graph;
|
return graph;
|
||||||
}
|
}
|
||||||
|
@ -43,7 +43,7 @@ extern struct LG_OverlayOps LGOverlayMsg;
|
|||||||
void overlayAlert_show(LG_MsgAlert type, const char * fmt, va_list args);
|
void overlayAlert_show(LG_MsgAlert type, const char * fmt, va_list args);
|
||||||
|
|
||||||
GraphHandle overlayGraph_register(const char * name, RingBuffer buffer,
|
GraphHandle overlayGraph_register(const char * name, RingBuffer buffer,
|
||||||
float min, float max);
|
float min, float max, GraphFormatFn formatFn);
|
||||||
void overlayGraph_unregister();
|
void overlayGraph_unregister();
|
||||||
void overlayGraph_iterate(void (*callback)(GraphHandle handle, const char * name,
|
void overlayGraph_iterate(void (*callback)(GraphHandle handle, const char * name,
|
||||||
bool * enabled, void * udata), void * udata);
|
bool * enabled, void * udata), void * udata);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user