mangoapp: hide when steam is focused

mangoapp-fpslimit
FlightlessMango 2 years ago
parent cdcd08be44
commit 339f5c0d11

@ -35,6 +35,35 @@ std::condition_variable mangoapp_cv;
static uint8_t raw_msg[1024] = {0};
uint8_t g_fsrUpscale = 0;
uint8_t g_fsrSharpness = 0;
GLFWwindow* glfwWindow;
static unsigned int get_prop(GLFWwindow* window){
Display *x11_display = glfwGetX11Display();
Window x11_window = glfwGetX11Window(window);
Atom gamescope_focused = XInternAtom(x11_display, "GAMESCOPE_FOCUSED_APP", true);
auto scr = DefaultScreen(x11_display);
auto root = RootWindow(x11_display, scr);
Atom actual;
int format;
unsigned long n, left;
uint64_t *data;
int result = XGetWindowProperty(x11_display, root, gamescope_focused, 0L, 1L, false,
XA_CARDINAL, &actual, &format,
&n, &left, ( unsigned char** )&data);
if (result == Success && data != NULL){
bool *found = nullptr;
unsigned int i;
memcpy(&i, data, sizeof(unsigned int));
XFree((void *) data);
if ( found != nullptr )
{
*found = true;
}
return i;
}
return 0;
}
void ctrl_thread(){
while (1){
@ -93,6 +122,10 @@ void msg_read_thread(){
{
std::unique_lock<std::mutex> lk(mangoapp_m);
new_frame = true;
if (get_prop(glfwWindow) == 769)
params->no_display = 1;
else
params->no_display = 0;
}
mangoapp_cv.notify_one();
}
@ -163,7 +196,8 @@ int main(int, char**)
glfwWindowHint(GLFW_TRANSPARENT_FRAMEBUFFER, 1);
// Create window with graphics context
GLFWwindow* window = init(window, glsl_version);;
GLFWwindow* window = init(window, glsl_version);
glfwWindow = window;
// Initialize OpenGL loader
bool err = glewInit() != GLEW_OK;

@ -620,8 +620,7 @@ parse_overlay_config(struct overlay_params *params,
params->fps_value = { 30, 60 };
params->round_corners = 0;
params->battery_color =0xff9078;
params->no_display = 1;
#ifdef HAVE_X11
params->toggle_hud = { XK_Shift_R, XK_F12 };
@ -660,13 +659,6 @@ parse_overlay_config(struct overlay_params *params,
// Get config options
bool has_config_file = parseConfigFile(*params);
#ifdef MANGOAPP
// Enable no_display if we have no config at all
// so we don't start randomly showing mangoapp if
// things went wrong somewhere.
if (!has_config_file)
params->no_display = true;
#endif
if (params->options.find("full") != params->options.end() && params->options.find("full")->second != "0") {
#define OVERLAY_PARAM_BOOL(name) \
params->enabled[OVERLAY_PARAM_ENABLED_##name] = 1;

Loading…
Cancel
Save