diff --git a/gfx/common/x11_common.c b/gfx/common/x11_common.c index 8c4e56b757..27850fd0d0 100644 --- a/gfx/common/x11_common.c +++ b/gfx/common/x11_common.c @@ -242,15 +242,20 @@ static void xdg_screensaver_inhibit(Window wnd) } } -void x11_suspend_screensaver(Window wnd, bool enable) +bool x11_suspend_screensaver(void *data, bool enable) { + Window wnd; + if (video_driver_display_type_get() != RARCH_DISPLAY_X11) + return false; + wnd = video_driver_window_get(); #ifdef HAVE_DBUS if (dbus_suspend_screensaver(enable)) - return; + return true; #endif if (enable) if (xdg_screensaver_available) xdg_screensaver_inhibit(wnd); + return true; } #ifdef HAVE_XF86VM diff --git a/gfx/common/x11_common.h b/gfx/common/x11_common.h index c21e5a8136..350b9973f0 100644 --- a/gfx/common/x11_common.h +++ b/gfx/common/x11_common.h @@ -30,7 +30,7 @@ extern unsigned g_x11_screen; void x11_show_mouse(Display *dpy, Window win, bool state); void x11_set_net_wm_fullscreen(Display *dpy, Window win); -void x11_suspend_screensaver(Window win, bool enable); +void x11_suspend_screensaver(void *data, bool enable); void x11_move_window(Display *dpy, Window win, int x, int y, unsigned width, unsigned height); @@ -49,6 +49,8 @@ bool x11_enter_fullscreen(Display *dpy, unsigned width, unsigned height); void x11_exit_fullscreen(Display *dpy); #endif +void x11_suspend_screensaver(void *data, bool state); + void x11_check_window(void *data, bool *quit, bool *resize, unsigned *width, unsigned *height); diff --git a/gfx/drivers/sdl2_gfx.c b/gfx/drivers/sdl2_gfx.c index ed4885b520..4e68f47753 100644 --- a/gfx/drivers/sdl2_gfx.c +++ b/gfx/drivers/sdl2_gfx.c @@ -539,19 +539,7 @@ static bool sdl2_gfx_focus(void *data) return (SDL_GetWindowFlags(vid->window) & flags) == flags; } -static bool sdl2_gfx_suppress_screensaver(void *data, bool enable) -{ - if (video_driver_display_type_get() == RARCH_DISPLAY_X11) - { -#ifdef HAVE_X11 - x11_suspend_screensaver(video_driver_window_get(), enable); -#endif - return true; - } - - return false; -} - +static bool sdl2_gfx_suspend_screensaver(void *data, bool enable) { return false; } /* TODO/FIXME - implement */ static bool sdl2_gfx_has_windowed(void *data) { return true; } @@ -726,7 +714,11 @@ video_driver_t video_sdl2 = { sdl2_gfx_set_nonblock_state, sdl2_gfx_alive, sdl2_gfx_focus, - sdl2_gfx_suppress_screensaver, +#ifdef HAVE_X11 + x11_suspend_screensaver, +#else + sdl2_gfx_suspend_screensaver, +#endif sdl2_gfx_has_windowed, sdl2_gfx_set_shader, sdl2_gfx_free, diff --git a/gfx/drivers/sdl_gfx.c b/gfx/drivers/sdl_gfx.c index 1b74905f7e..62e76d9bcb 100644 --- a/gfx/drivers/sdl_gfx.c +++ b/gfx/drivers/sdl_gfx.c @@ -432,19 +432,7 @@ static bool sdl_gfx_focus(void *data) return (SDL_GetAppState() & (SDL_APPINPUTFOCUS | SDL_APPACTIVE)) == (SDL_APPINPUTFOCUS | SDL_APPACTIVE); } -static bool sdl_gfx_suppress_screensaver(void *data, bool enable) -{ -#ifdef HAVE_X11 - if (video_driver_display_type_get() == RARCH_DISPLAY_X11) - { - x11_suspend_screensaver(video_driver_window_get(), enable); - return true; - } -#endif - - return false; -} - +static bool sdl_gfx_suspend_screensaver(void *data, bool enable) { return false; } /* TODO/FIXME - implement */ static bool sdl_gfx_has_windowed(void *data) { return true; } @@ -576,7 +564,11 @@ video_driver_t video_sdl = { sdl_gfx_set_nonblock_state, sdl_gfx_alive, sdl_gfx_focus, - sdl_gfx_suppress_screensaver, +#ifdef HAVE_X11 + x11_suspend_screensaver, +#else + sdl_gfx_suspend_screensaver, +#endif sdl_gfx_has_windowed, sdl_gfx_set_shader, sdl_gfx_free, diff --git a/gfx/drivers/xvideo.c b/gfx/drivers/xvideo.c index 6da65d7844..73b9c542d7 100644 --- a/gfx/drivers/xvideo.c +++ b/gfx/drivers/xvideo.c @@ -1064,15 +1064,6 @@ static bool xv_frame(void *data, const void *frame, unsigned width, return true; } -static bool xv_suppress_screensaver(void *data, bool enable) -{ - if (video_driver_display_type_get() != RARCH_DISPLAY_X11) - return false; - - x11_suspend_screensaver(video_driver_window_get(), enable); - return true; -} - static bool xv_has_windowed(void *data) { return true; } static void xv_free(void *data) @@ -1182,7 +1173,7 @@ video_driver_t video_xvideo = { xv_set_nonblock_state, x11_alive, x11_has_focus_internal, - xv_suppress_screensaver, + x11_suspend_screensaver, xv_has_windowed, xv_set_shader, xv_free, diff --git a/gfx/drivers_context/x_ctx.c b/gfx/drivers_context/x_ctx.c index 3edaa6be16..92d5546c8a 100644 --- a/gfx/drivers_context/x_ctx.c +++ b/gfx/drivers_context/x_ctx.c @@ -293,9 +293,8 @@ static void gfx_ctx_x_swap_interval(void *data, int interval) static void gfx_ctx_x_swap_buffers(void *data) { - gfx_ctx_x_data_t *x = (gfx_ctx_x_data_t*)data; - #if defined(HAVE_OPENGL) || defined(HAVE_OPENGL1) || defined(HAVE_OPENGL_CORE) + gfx_ctx_x_data_t *x = (gfx_ctx_x_data_t*)data; if (x->is_double) glXSwapBuffers(g_x11_dpy, x->glx_win); #endif @@ -313,7 +312,8 @@ static bool gfx_ctx_x_set_resize(void *data, * X11 loses focus on monitor/resolution swap and exits fullscreen. * Set window on top again to maintain both fullscreen and resolution. */ - if (x->is_fullscreen) { + if (x->is_fullscreen) + { XMapRaised(g_x11_dpy, g_x11_win); RARCH_LOG("[GLX]: Resized fullscreen resolution to %dx%d.\n", width, height); } @@ -966,18 +966,6 @@ static void gfx_ctx_x_input_driver(void *data, *input_data = x_input; } -static bool gfx_ctx_x_suppress_screensaver(void *data, bool enable) -{ - (void)data; - - if (video_driver_display_type_get() != RARCH_DISPLAY_X11) - return false; - - x11_suspend_screensaver(video_driver_window_get(), enable); - - return true; -} - static gfx_ctx_proc_t gfx_ctx_x_get_proc_address(const char *symbol) { switch (x_api) @@ -1186,7 +1174,7 @@ const gfx_ctx_driver_t gfx_ctx_x = { x11_check_window, gfx_ctx_x_set_resize, x11_has_focus, - gfx_ctx_x_suppress_screensaver, + x11_suspend_screensaver, true, /* has_windowed */ gfx_ctx_x_swap_buffers, gfx_ctx_x_input_driver, diff --git a/gfx/drivers_context/x_vk_ctx.c b/gfx/drivers_context/x_vk_ctx.c index 9d234dff10..554635d1a0 100644 --- a/gfx/drivers_context/x_vk_ctx.c +++ b/gfx/drivers_context/x_vk_ctx.c @@ -508,16 +508,6 @@ static void gfx_ctx_x_vk_input_driver(void *data, *input_data = x_input; } -static bool gfx_ctx_x_vk_suppress_screensaver(void *data, bool enable) -{ - if (video_driver_display_type_get() != RARCH_DISPLAY_X11) - return false; - - x11_suspend_screensaver(video_driver_window_get(), enable); - - return true; -} - static enum gfx_ctx_api gfx_ctx_x_vk_get_api(void *data) { return GFX_CTX_VULKAN_API; @@ -575,7 +565,7 @@ const gfx_ctx_driver_t gfx_ctx_vk_x = { gfx_ctx_x_vk_check_window, gfx_ctx_x_vk_set_resize, x11_has_focus, - gfx_ctx_x_vk_suppress_screensaver, + x11_suspend_screensaver, true, /* has_windowed */ gfx_ctx_x_vk_swap_buffers, gfx_ctx_x_vk_input_driver, diff --git a/gfx/drivers_context/xegl_ctx.c b/gfx/drivers_context/xegl_ctx.c index 94873ae80d..cc20bfeca6 100644 --- a/gfx/drivers_context/xegl_ctx.c +++ b/gfx/drivers_context/xegl_ctx.c @@ -483,16 +483,6 @@ static void gfx_ctx_xegl_input_driver(void *data, *input_data = xinput; } -static bool gfx_ctx_xegl_suppress_screensaver(void *data, bool enable) -{ - if (video_driver_display_type_get() != RARCH_DISPLAY_X11) - return false; - - x11_suspend_screensaver(video_driver_window_get(), enable); - - return true; -} - static enum gfx_ctx_api gfx_ctx_xegl_get_api(void *data) { return xegl_api; } static bool gfx_ctx_xegl_bind_api(void *video_driver, @@ -621,7 +611,7 @@ const gfx_ctx_driver_t gfx_ctx_x_egl = x11_check_window, NULL, /* set_resize */ x11_has_focus, - gfx_ctx_xegl_suppress_screensaver, + x11_suspend_screensaver, true, /* has_windowed */ gfx_ctx_xegl_swap_buffers, gfx_ctx_xegl_input_driver,