|
|
|
@ -23,7 +23,7 @@ static void glfw_error_callback(int error, const char* description)
|
|
|
|
|
fprintf(stderr, "Glfw Error %d: %s\n", error, description);
|
|
|
|
|
}
|
|
|
|
|
swapchain_stats sw_stats {};
|
|
|
|
|
overlay_params params {};
|
|
|
|
|
overlay_params *params;
|
|
|
|
|
static ImVec2 window_size;
|
|
|
|
|
static uint32_t vendorID;
|
|
|
|
|
static std::string deviceName;
|
|
|
|
@ -45,7 +45,7 @@ void msg_read_thread(){
|
|
|
|
|
size_t msg_size = msgrcv(msgid, (void *) raw_msg, sizeof(raw_msg), 1, 0);
|
|
|
|
|
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);
|
|
|
|
|
update_hud_info_with_frametime(sw_stats, *params, vendorID, mangoapp_v1->frametime_ns);
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
printf("Unsupported mangoapp struct version: %i\n", hdr->version);
|
|
|
|
@ -112,11 +112,15 @@ int main(int, char**)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Setup Platform/Renderer backends
|
|
|
|
|
parse_overlay_config(¶ms, getenv("MANGOHUD_CONFIG"));
|
|
|
|
|
create_fonts(params, sw_stats.font1, sw_stats.font_text);
|
|
|
|
|
HUDElements.convert_colors(params);
|
|
|
|
|
init_cpu_stats(params);
|
|
|
|
|
notifier.params = ¶ms;
|
|
|
|
|
struct device_data *device_data = new struct device_data();
|
|
|
|
|
device_data->instance = new struct instance_data();
|
|
|
|
|
device_data->instance->params = {};
|
|
|
|
|
params = &device_data->instance->params;
|
|
|
|
|
parse_overlay_config(params, getenv("MANGOHUD_CONFIG"));
|
|
|
|
|
create_fonts(*params, sw_stats.font1, sw_stats.font_text);
|
|
|
|
|
HUDElements.convert_colors(*params);
|
|
|
|
|
init_cpu_stats(*params);
|
|
|
|
|
notifier.params = params;
|
|
|
|
|
start_notifier(notifier);
|
|
|
|
|
deviceName = (char*)glGetString(GL_RENDERER);
|
|
|
|
|
sw_stats.deviceName = deviceName;
|
|
|
|
@ -126,18 +130,18 @@ int main(int, char**)
|
|
|
|
|
} else {
|
|
|
|
|
vendorID = 0x10de;
|
|
|
|
|
}
|
|
|
|
|
init_gpu_stats(vendorID, 0, params);
|
|
|
|
|
init_gpu_stats(vendorID, 0, *params);
|
|
|
|
|
init_system_info();
|
|
|
|
|
sw_stats.engine = EngineTypes::GAMESCOPE;
|
|
|
|
|
std::thread(msg_read_thread).detach();
|
|
|
|
|
if(!logger) logger = std::make_unique<Logger>(HUDElements.params);
|
|
|
|
|
// Main loop
|
|
|
|
|
while (!glfwWindowShouldClose(window)){
|
|
|
|
|
if (!params.no_display){
|
|
|
|
|
if (!params->no_display){
|
|
|
|
|
if (mangoapp_paused){
|
|
|
|
|
window = init(window, glsl_version);
|
|
|
|
|
create_fonts(params, sw_stats.font1, sw_stats.font_text);
|
|
|
|
|
HUDElements.convert_colors(params);
|
|
|
|
|
create_fonts(*params, sw_stats.font1, sw_stats.font_text);
|
|
|
|
|
HUDElements.convert_colors(*params);
|
|
|
|
|
mangoapp_paused = false;
|
|
|
|
|
}
|
|
|
|
|
// Start the Dear ImGui frame
|
|
|
|
@ -146,9 +150,13 @@ int main(int, char**)
|
|
|
|
|
window_size.x = window_size.x * 1.2;
|
|
|
|
|
ImGui::NewFrame();
|
|
|
|
|
{
|
|
|
|
|
check_keybinds(sw_stats, params, vendorID);
|
|
|
|
|
position_layer(sw_stats, params, window_size);
|
|
|
|
|
render_imgui(sw_stats, params, window_size, true);
|
|
|
|
|
check_keybinds(sw_stats, *params, vendorID);
|
|
|
|
|
position_layer(sw_stats, *params, window_size);
|
|
|
|
|
render_imgui(sw_stats, *params, window_size, true);
|
|
|
|
|
if (params->control >= 0) {
|
|
|
|
|
control_client_check(device_data);
|
|
|
|
|
process_control_socket(device_data->instance);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
ImGui::PopStyleVar(3);
|
|
|
|
|
|
|
|
|
@ -169,7 +177,7 @@ int main(int, char**)
|
|
|
|
|
shutdown(window);
|
|
|
|
|
mangoapp_paused = true;
|
|
|
|
|
std::unique_lock<std::mutex> lk(mangoapp_m);
|
|
|
|
|
mangoapp_cv.wait(lk, []{return !params.no_display;});
|
|
|
|
|
mangoapp_cv.wait(lk, []{return !params->no_display;});
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|