diff options
Diffstat (limited to 'render/fx_renderer')
-rw-r--r-- | render/fx_renderer/fx_pass.c | 3 | ||||
-rw-r--r-- | render/fx_renderer/fx_renderer.c | 4 |
2 files changed, 5 insertions, 2 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(); diff --git a/render/fx_renderer/fx_renderer.c b/render/fx_renderer/fx_renderer.c index 9c22868..3ffc2cd 100644 --- a/render/fx_renderer/fx_renderer.c +++ b/render/fx_renderer/fx_renderer.c @@ -651,7 +651,7 @@ static bool link_shaders(struct fx_renderer *renderer) { goto error; } // rounded quad fragment shaders - if (!link_quad_grad_round_program(&renderer->shaders.quad_grad_round_tl, SHADER_SOURCE_QUAD_ROUND_TOP_LEFT, 2)) { + if (!link_quad_grad_round_program(&renderer->shaders.quad_grad_round_tl, SHADER_SOURCE_QUAD_ROUND_TOP_LEFT, 16)) { wlr_log(WLR_ERROR, "Could not link quad shader"); goto error; } @@ -718,7 +718,7 @@ static bool link_shaders(struct fx_renderer *renderer) { } // border corner shader with gradients - if (!link_rounded_grad_border_corner_program(&renderer->shaders.rounded_grad_border_corner, 2)) { + if (!link_rounded_grad_border_corner_program(&renderer->shaders.rounded_grad_border_corner, 16)) { wlr_log(WLR_ERROR, "Could not link quad shader"); goto error; } |