summaryrefslogtreecommitdiff
path: root/render/fx_renderer/fx_pass.c
diff options
context:
space:
mode:
Diffstat (limited to 'render/fx_renderer/fx_pass.c')
-rw-r--r--render/fx_renderer/fx_pass.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/render/fx_renderer/fx_pass.c b/render/fx_renderer/fx_pass.c
index 42e0fc7..5e6f25b 100644
--- a/render/fx_renderer/fx_pass.c
+++ b/render/fx_renderer/fx_pass.c
@@ -374,6 +374,7 @@ void fx_render_pass_add_rect_grad(struct fx_gles_render_pass *pass,
struct fx_renderer *renderer = pass->buffer->renderer;
if(renderer->shaders.quad_grad.max_len <= fx_options->gradient.count){
+ glDeleteProgram(renderer->shaders.quad_grad.program);
if(!link_quad_grad_program(&renderer->shaders.quad_grad, fx_options->gradient.count + 1)){
wlr_log(WLR_ERROR, "Could not link quad shader after updating max_len to %d. Aborting renderer", fx_options->gradient.count + 1);
abort();
@@ -487,6 +488,7 @@ void fx_render_pass_add_rounded_rect_grad(struct fx_gles_render_pass *pass,
}
if(shader->max_len <= fx_options->gradient.count){
+ glDeleteProgram(shader->program);
if(!link_quad_grad_round_program(shader, corner, fx_options->gradient.count + 1)){
wlr_log(WLR_ERROR, "Could not link quad shader after updating max_len to %d. Aborting renderer", fx_options->gradient.count + 1);
abort();
@@ -562,6 +564,7 @@ void fx_render_pass_add_rounded_grad_border_corner(struct fx_gles_render_pass *p
struct fx_renderer *renderer = pass->buffer->renderer;
if(renderer->shaders.rounded_grad_border_corner.max_len <= fx_options->gradient.count){
+ glDeleteProgram(renderer->shaders.rounded_grad_border_corner.program);
if(!link_rounded_grad_border_corner_program(&renderer->shaders.rounded_grad_border_corner, fx_options->gradient.count + 1)){
wlr_log(WLR_ERROR, "Could not link quad shader after updating max_len to %d. Aborting renderer", fx_options->gradient.count + 1);
abort();