mangoapp: Don't redraw if we don't have new frames

pull/679/head
Joshua Ashton 2 years ago
parent da8b0cbad4
commit b99817fd2b

@ -73,6 +73,8 @@ void ctrl_thread(){
}
}
bool new_frame = false;
void msg_read_thread(){
int key = ftok("mangoapp", 65);
msgid = msgget(key, 0666 | IPC_CREAT);
@ -85,6 +87,11 @@ void msg_read_thread(){
if (hdr->version == 1){
if (msg_size > offsetof(struct mangoapp_msg_v1, frametime_ns)){
update_hud_info_with_frametime(sw_stats, *params, vendorID, mangoapp_v1->frametime_ns);
{
std::unique_lock<std::mutex> lk(mangoapp_m);
new_frame = true;
}
mangoapp_cv.notify_one();
}
} else {
printf("Unsupported mangoapp struct version: %i\n", hdr->version);
@ -184,6 +191,11 @@ int main(int, char**)
HUDElements.convert_colors(*params);
mangoapp_paused = false;
}
{
std::unique_lock<std::mutex> lk(mangoapp_m);
mangoapp_cv.wait(lk, []{return new_frame || params->no_display;});
new_frame = false;
}
// Start the Dear ImGui frame
ImGui_ImplOpenGL3_NewFrame();
ImGui_ImplGlfw_NewFrame();

@ -812,8 +812,10 @@ parse_overlay_config(struct overlay_params *params,
std::thread(autostart_log, params->autostart_log).detach();
#ifdef MANGOAPP
{
extern bool new_frame;
std::lock_guard<std::mutex> lk(mangoapp_m);
params->no_display = params->no_display;
new_frame = true; // we probably changed how we look.
}
mangoapp_cv.notify_one();
#endif

Loading…
Cancel
Save