diff --git a/src/backend/backend.c b/src/backend/backend.c index bf5379d3..9f674737 100644 --- a/src/backend/backend.c +++ b/src/backend/backend.c @@ -14,14 +14,6 @@ backend_info_t *backend_list[NUM_BKEND] = { #endif }; -bool default_is_win_transparent(void *backend_data, win *w, void *win_data) { - return w->mode != WMODE_SOLID; -} - -bool default_is_frame_transparent(void *backend_data, win *w, void *win_data) { - return w->frame_opacity != 1; -} - region_t get_damage(session_t *ps) { region_t region; auto buffer_age_fn = backend_list[ps->o.backend]->buffer_age; diff --git a/src/backend/backend_common.c b/src/backend/backend_common.c index acdbcdca..96985b46 100644 --- a/src/backend/backend_common.c +++ b/src/backend/backend_common.c @@ -244,3 +244,11 @@ shadow_picture_err: return false; } + +bool default_is_win_transparent(void *backend_data, win *w, void *win_data) { + return w->mode != WMODE_SOLID; +} + +bool default_is_frame_transparent(void *backend_data, win *w, void *win_data) { + return w->frame_opacity != 1; +} diff --git a/src/backend/backend_common.h b/src/backend/backend_common.h index 3b6d9581..72321abe 100644 --- a/src/backend/backend_common.h +++ b/src/backend/backend_common.h @@ -19,3 +19,11 @@ solid_picture(session_t *ps, bool argb, double a, double r, double g, double b); xcb_image_t * make_shadow(xcb_connection_t *c, const conv *kernel, double opacity, int width, int height); + +/// The default implementation of `is_win_transparent`, it simply looks at win::mode. So +/// this is not suitable for backends that alter the content of windows +bool default_is_win_transparent(void *, win *, void *); + +/// The default implementation of `is_frame_transparent`, it uses win::frame_opacity. Same +/// caveat as `default_is_win_transparent` applies. +bool default_is_frame_transparent(void *, win *, void *);