diff --git a/src/backend/backend.c b/src/backend/backend.c index 293a86b..a1fb282 100644 --- a/src/backend/backend.c +++ b/src/backend/backend.c @@ -383,6 +383,10 @@ void paint_all_new(session_t *ps, struct managed_win *t, bool ignore_damage) { ps->backend_data, IMAGE_PROPERTY_BORDER_WIDTH, w->win_image, &border_width); } + + ps->backend_data->ops->set_image_property( + ps->backend_data, IMAGE_PROPERTY_CUSTOM_SHADER, w->win_image, + w->fg_shader ? (void *)w->fg_shader->backend_shader : NULL); } if (w->opacity * MAX_ALPHA < 1) { diff --git a/src/backend/backend.h b/src/backend/backend.h index 62d0f87..ff60ae1 100644 --- a/src/backend/backend.h +++ b/src/backend/backend.h @@ -70,6 +70,9 @@ enum image_properties { // Border width // 1 int, default: 0 IMAGE_PROPERTY_BORDER_WIDTH, + // Custom shader for this window. + // 1 pointer to shader struct, default: NULL + IMAGE_PROPERTY_CUSTOM_SHADER, }; enum image_operations { diff --git a/src/backend/backend_common.c b/src/backend/backend_common.c index 5bd75e2..165a9dd 100644 --- a/src/backend/backend_common.c +++ b/src/backend/backend_common.c @@ -452,6 +452,7 @@ bool default_set_image_property(backend_t *base attr_unused, enum image_properti case IMAGE_PROPERTY_CORNER_RADIUS: tex->corner_radius = dargs[0]; break; case IMAGE_PROPERTY_MAX_BRIGHTNESS: tex->max_brightness = dargs[0]; break; case IMAGE_PROPERTY_BORDER_WIDTH: tex->border_width = *(int *)arg; break; + case IMAGE_PROPERTY_CUSTOM_SHADER: break; } return true;