From 7831d9a4638a72a81d3ca5e880220a79cc60012d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timm=20B=C3=A4der?= Date: Sat, 2 Dec 2017 11:17:46 +0100 Subject: [PATCH] gl renderer: Only draw blurred shadow nodes once --- gsk/gl/gskglrenderer.c | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/gsk/gl/gskglrenderer.c b/gsk/gl/gskglrenderer.c index 41fa4a048c..6e9ad71632 100644 --- a/gsk/gl/gskglrenderer.c +++ b/gsk/gl/gskglrenderer.c @@ -1247,10 +1247,17 @@ gsk_gl_renderer_add_render_ops (GskGLRenderer *self, gsize n_shadows = gsk_shadow_node_get_n_shadows (node); guint i; - /* TODO: shadow nodes are most commonly used for text and icon shadows. - * In both cases, we can avoid the RTT case! - * if the child is neither a text node nor a texture node though, we need - * to fall back to rendering it to a texture and then applying the shadow on that one.*/ + /* TODO: Implement blurred shadow nodes */; + for (i = 0; i < n_shadows; i ++) + { + const GskShadow *shadow = gsk_shadow_node_peek_shadow (node, i); + + if (shadow->radius > 0) + { + render_fallback_node (self, node, builder, vertex_data); + return; + } + } for (i = 0; i < n_shadows; i ++) { @@ -1260,13 +1267,7 @@ gsk_gl_renderer_add_render_ops (GskGLRenderer *self, graphene_matrix_t offset_matrix; graphene_matrix_t prev_modelview; - /* TODO: Implement blurred shadow nodes */; - if (shadow->radius > 0) - { - /* TODO: This draws the entire node, not just one shadow. */ - render_fallback_node (self, node, builder, vertex_data); - continue; - } + g_assert (shadow->radius <= 0); if (gsk_render_node_get_node_type (child) == GSK_TEXT_NODE) {