From adeb09b775141fe5f101bdfe1e4a4ab760ff6e66 Mon Sep 17 00:00:00 2001 From: Yuxuan Shui Date: Wed, 22 Apr 2020 20:13:18 +0100 Subject: [PATCH] driver: allow apply_driver_workaround to set options Signed-off-by: Yuxuan Shui --- src/backend/driver.c | 2 +- src/backend/driver.h | 2 +- src/picom.c | 9 ++------- 3 files changed, 4 insertions(+), 9 deletions(-) diff --git a/src/backend/driver.c b/src/backend/driver.c index d5e26a35..e3b263a8 100644 --- a/src/backend/driver.c +++ b/src/backend/driver.c @@ -13,7 +13,7 @@ #include "log.h" /// Apply driver specified global workarounds. It's safe to call this multiple times. -void apply_driver_workarounds(enum driver driver) { +void apply_driver_workarounds(struct session *ps, enum driver driver) { if (driver & DRIVER_NVIDIA) { setenv("__GL_YIELD", "usleep", true); } diff --git a/src/backend/driver.h b/src/backend/driver.h index b1f78943..e236a6cd 100644 --- a/src/backend/driver.h +++ b/src/backend/driver.h @@ -33,7 +33,7 @@ enum driver { enum driver detect_driver(xcb_connection_t *, struct backend_base *, xcb_window_t); /// Apply driver specified global workarounds. It's safe to call this multiple times. -void apply_driver_workarounds(enum driver); +void apply_driver_workarounds(struct session *ps, enum driver); // Print driver names to stdout, for diagnostics static inline void print_drivers(enum driver drivers) { diff --git a/src/picom.c b/src/picom.c index d656d6e6..4a31db5c 100644 --- a/src/picom.c +++ b/src/picom.c @@ -1224,7 +1224,7 @@ static bool redirect_start(session_t *ps) { // Re-detect driver since we now have a backend ps->drivers = detect_driver(ps->c, ps->backend_data, ps->root); - apply_driver_workarounds(ps->drivers); + apply_driver_workarounds(ps, ps->drivers); root_damaged(ps); @@ -1960,13 +1960,8 @@ static session_t *session_init(int argc, char **argv, Display *dpy, } } - // Target window must be initialized before the backend - // - // backend_operations::present == NULL means this backend doesn't need a target - // window; non experimental backends always need a target window - ps->drivers = detect_driver(ps->c, ps->backend_data, ps->root); - apply_driver_workarounds(ps->drivers); + apply_driver_workarounds(ps, ps->drivers); // Initialize filters, must be preceded by OpenGL context creation if (!ps->o.experimental_backends && !init_render(ps)) {