mirror of
https://github.com/libretro/RetroArch
synced 2025-03-29 22:20:21 +00:00
(video_driver_frame) Do away with a lot of string intermediary copies
for formatting the status text
This commit is contained in:
parent
200897f61e
commit
8e949c516e
@ -3744,13 +3744,20 @@ void video_driver_frame(const void *data, unsigned width,
|
||||
fps_time = new_time;
|
||||
|
||||
if (video_info.fps_show)
|
||||
buf_pos = snprintf(
|
||||
status_text, sizeof(status_text),
|
||||
"FPS: %6.2f", last_fps);
|
||||
{
|
||||
status_text[0] = 'F';
|
||||
status_text[1] = 'P';
|
||||
status_text[2] = 'S';
|
||||
status_text[3] = ':';
|
||||
status_text[4] = ' ';
|
||||
status_text[5] = '\0';
|
||||
buf_pos = snprintf(
|
||||
status_text + 5, sizeof(status_text) - 5,
|
||||
"%6.2f", last_fps) + 5;
|
||||
}
|
||||
|
||||
if (video_info.framecount_show)
|
||||
{
|
||||
char frames_text[64];
|
||||
if (status_text[buf_pos-1] != '\0')
|
||||
{
|
||||
status_text[buf_pos ] = ' ';
|
||||
@ -3759,36 +3766,45 @@ void video_driver_frame(const void *data, unsigned width,
|
||||
status_text[buf_pos+3] = ' ';
|
||||
status_text[buf_pos+4] = '\0';
|
||||
}
|
||||
snprintf(frames_text,
|
||||
sizeof(frames_text),
|
||||
"%s: %" PRIu64, msg_hash_to_str(MSG_FRAMES),
|
||||
(uint64_t)video_st->frame_count);
|
||||
buf_pos = strlcat(status_text, frames_text, sizeof(status_text));
|
||||
buf_pos = strlcat(status_text, msg_hash_to_str(MSG_FRAMES),
|
||||
sizeof(status_text));
|
||||
status_text[buf_pos ] = ':';
|
||||
status_text[++buf_pos] = ' ';
|
||||
status_text[++buf_pos] = '\0';
|
||||
buf_pos += snprintf(
|
||||
status_text + buf_pos,
|
||||
sizeof(status_text) - buf_pos,
|
||||
"%" PRIu64, (uint64_t)video_st->frame_count);
|
||||
}
|
||||
|
||||
if (video_info.memory_show)
|
||||
{
|
||||
char mem[128];
|
||||
|
||||
if ((video_st->frame_count % memory_update_interval) == 0)
|
||||
{
|
||||
last_total_memory = frontend_driver_get_total_memory();
|
||||
last_used_memory = last_total_memory - frontend_driver_get_free_memory();
|
||||
}
|
||||
|
||||
mem[0] = '\0';
|
||||
snprintf(
|
||||
mem, sizeof(mem), "MEM: %.2f/%.2fMB", last_used_memory / (1024.0f * 1024.0f),
|
||||
last_total_memory / (1024.0f * 1024.0f));
|
||||
if (status_text[buf_pos-1] != '\0')
|
||||
{
|
||||
status_text[buf_pos ] = ' ';
|
||||
status_text[buf_pos+1] = '|';
|
||||
status_text[buf_pos+2] = '|';
|
||||
status_text[buf_pos+3] = ' ';
|
||||
status_text[buf_pos+4] = '\0';
|
||||
status_text[buf_pos] = ' ';
|
||||
status_text[++buf_pos] = '|';
|
||||
status_text[++buf_pos] = '|';
|
||||
status_text[++buf_pos] = ' ';
|
||||
status_text[++buf_pos] = '\0';
|
||||
}
|
||||
buf_pos = strlcat(status_text, mem, sizeof(status_text));
|
||||
status_text[buf_pos ] = 'M';
|
||||
status_text[++buf_pos] = 'E';
|
||||
status_text[++buf_pos] = 'M';
|
||||
status_text[++buf_pos] = ':';
|
||||
status_text[++buf_pos] = ' ';
|
||||
status_text[++buf_pos] = '\0';
|
||||
buf_pos += snprintf(
|
||||
status_text + buf_pos, sizeof(status_text) - buf_pos, "%.2f/%.2f", last_used_memory / (1024.0f * 1024.0f),
|
||||
last_total_memory / (1024.0f * 1024.0f));
|
||||
status_text[buf_pos ] = 'M';
|
||||
status_text[++buf_pos] = 'B';
|
||||
status_text[++buf_pos] = '\0';
|
||||
}
|
||||
|
||||
if ((video_st->frame_count % fps_update_interval) == 0)
|
||||
|
Loading…
x
Reference in New Issue
Block a user