[gtk+] gl renderer: Fix shadow node child offset



commit 8f4e0705dc0f9dca0d3db019c2eac4089aba022e
Author: Timm Bäder <mail baedert org>
Date:   Fri Jan 19 15:00:22 2018 +0100

    gl renderer: Fix shadow node child offset
    
    We shouldn't apply the shadow offset when drawing the child offscreen,
    instead apply it afterwards when we draw it to the current render
    target.

 gsk/gl/gskglrenderer.c |   11 ++++++-----
 1 files changed, 6 insertions(+), 5 deletions(-)
---
diff --git a/gsk/gl/gskglrenderer.c b/gsk/gl/gskglrenderer.c
index 71ba645..84e74d7 100644
--- a/gsk/gl/gskglrenderer.c
+++ b/gsk/gl/gskglrenderer.c
@@ -1327,21 +1327,20 @@ render_shadow_node (GskGLRenderer       *self,
       prev_dx = builder->dx;
       prev_dy = builder->dy;
 
-      ops_offset (builder, dx, dy);
-
       if (gsk_render_node_get_node_type (shadow_child) == GSK_TEXT_NODE)
         {
+          ops_offset (builder, dx, dy);
           render_text_node (self, shadow_child, builder, &shadow->color, TRUE);
           ops_offset (builder, prev_dx, prev_dy);
           continue;
         }
 
+      /* Draw the child offscreen, without the offset. */
       add_offscreen_ops (self, builder,
-                         dx + min_x, dx + max_x, dy + min_y, dy + max_y,
+                         min_x, max_x, min_y, max_y,
                          shadow_child, &texture_id, &is_offscreen, FALSE);
 
-      ops_offset (builder, prev_dx, prev_dy);
-
+      ops_offset (builder, dx, dy);
       ops_set_program (builder, &self->shadow_program);
       ops_set_color (builder, &shadow->color);
       ops_set_texture (builder, texture_id);
@@ -1373,6 +1372,8 @@ render_shadow_node (GskGLRenderer       *self,
 
           ops_draw (builder, vertex_data);
         }
+
+      ops_offset (builder, prev_dx, prev_dy);
     }
 
   /* Now draw the child normally */


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]