mangoapp: control socket

pull/673/head
FlightlessMango 2 years ago
parent d4ca1050ec
commit 3e2023a4a2

@ -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(&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;
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;});
}
}

@ -3,6 +3,9 @@
#include <cstring>
#include "mesa/util/os_socket.h"
#include "overlay.h"
#ifdef MANGOAPP
#include "app/mangoapp.h"
#endif
using namespace std;
static void parse_command(struct instance_data *instance_data,
@ -10,13 +13,22 @@ static void parse_command(struct instance_data *instance_data,
const char *param, unsigned paramlen)
{
if (!strncmp(cmd, "hud", cmdlen)) {
_params->no_display = !_params->no_display;
#ifdef MANGOAPP
std::lock_guard<std::mutex> lk(mangoapp_m);
instance_data->params.no_display = !instance_data->params.no_display;
mangoapp_cv.notify_one();
#else
instance_data->params.no_display = !instance_data->params.no_display;
#endif
}
if (!strncmp(cmd, "logging", cmdlen)) {
if (logger->is_active())
logger->stop_logging();
else
logger->start_logging();
auto now = Clock::now(); /* us */
if (now - logger->last_log_end() > 11s){
if (logger->is_active())
logger->stop_logging();
else
logger->start_logging();
}
}
}

Loading…
Cancel
Save