diff --git a/gsk/gpu/gskgpunodeprocessor.c b/gsk/gpu/gskgpunodeprocessor.c index c5846cf571..f064dfb8a5 100644 --- a/gsk/gpu/gskgpunodeprocessor.c +++ b/gsk/gpu/gskgpunodeprocessor.c @@ -3928,6 +3928,10 @@ gsk_gpu_node_processor_process (GskGpuFrame *frame, gsk_gpu_node_processor_add_node (&self, node); } + + gsk_gpu_render_pass_end_op (frame, + target, + pass_type); } else { @@ -3951,6 +3955,13 @@ gsk_gpu_node_processor_process (GskGpuFrame *frame, if (image != NULL) { + /* FIXME: Needs blend mode off to avoid the clear */ + gsk_gpu_render_pass_begin_op (frame, + target, + clip, + GSK_VEC4_TRANSPARENT, + pass_type); + self.blend = GSK_GPU_BLEND_ADD; self.pending_globals |= GSK_GPU_GLOBAL_BLEND; gsk_gpu_node_processor_sync_globals (&self, 0); @@ -3966,15 +3977,15 @@ gsk_gpu_node_processor_process (GskGpuFrame *frame, &node->bounds, &self.offset, &tex_rect); + + gsk_gpu_render_pass_end_op (frame, + target, + pass_type); + g_object_unref (image); } } - - gsk_gpu_render_pass_end_op (frame, - target, - pass_type); - gsk_gpu_node_processor_finish (&self); }