From 23ed31753607d9cc82d5a487ecdd938bb3fd0513 Mon Sep 17 00:00:00 2001 From: FlightlessMango Date: Thu, 18 Nov 2021 08:25:30 +0100 Subject: [PATCH] mangoapp: shm struct + gamescope engine --- src/app/main.cpp | 20 ++++++++++++++------ src/overlay.cpp | 2 +- src/overlay.h | 2 ++ 3 files changed, 17 insertions(+), 7 deletions(-) diff --git a/src/app/main.cpp b/src/app/main.cpp index 90e795d0..482d2d8d 100644 --- a/src/app/main.cpp +++ b/src/app/main.cpp @@ -66,11 +66,18 @@ int fd; char str1[80]; char *shm_str; +struct mangoapp { + int pid; + int read; +}; + +mangoapp *mangoapp_ptr; + void read_thread(){ while (1){ - if (strcmp("read", shm_str)) { - sprintf(shm_str, "%s", "read"); + if (mangoapp_ptr->read < 1) { update_hud_info(sw_stats, params, vendorID); + mangoapp_ptr->read = 1; } else { sleep(0.0001); } @@ -163,11 +170,12 @@ int main(int, char**) } init_gpu_stats(vendorID, params); init_system_info(); - + sw_stats.engine = EngineTypes::GAMESCOPE; // Our state key_t key = ftok("mangoapp",65); - int shmid = shmget(key,1024,0666|IPC_CREAT); - shm_str = (char*) shmat(shmid,(void*)0,0); + int shmid = shmget(key,sizeof(mangoapp),0666|IPC_CREAT); + auto shm_address = shmat(shmid, (void*)0, 0); + mangoapp_ptr = (mangoapp*)shm_address; std::thread(read_thread).detach(); // Main loop while (!glfwWindowShouldClose(window)) @@ -182,7 +190,7 @@ int main(int, char**) // Start the Dear ImGui frame ImGui_ImplOpenGL3_NewFrame(); ImGui_ImplGlfw_NewFrame(); - + window_size.x = window_size.x * 1.1; ImGui::NewFrame(); { check_keybinds(sw_stats, params, vendorID); diff --git a/src/overlay.cpp b/src/overlay.cpp index 208629a8..ff97497b 100644 --- a/src/overlay.cpp +++ b/src/overlay.cpp @@ -41,7 +41,7 @@ struct benchmark_stats benchmark; struct fps_limit fps_limit_stats {}; ImVec2 real_font_size; std::vector graph_data; -const char* engines[] = {"Unknown", "OpenGL", "VULKAN", "DXVK", "VKD3D", "DAMAVAND", "ZINK", "WINED3D", "Feral3D", "ToGL"}; +const char* engines[] = {"Unknown", "OpenGL", "VULKAN", "DXVK", "VKD3D", "DAMAVAND", "ZINK", "WINED3D", "Feral3D", "ToGL", "GAMESCOPE"}; overlay_params *_params {}; void update_hw_info(struct swapchain_stats& sw_stats, struct overlay_params& params, uint32_t vendorID) diff --git a/src/overlay.h b/src/overlay.h index 99731d30..49695652 100644 --- a/src/overlay.h +++ b/src/overlay.h @@ -39,6 +39,8 @@ enum EngineTypes WINED3D, FERAL3D, TOGL, + + GAMESCOPE }; extern const char* engines[];