[gtk+] Reshuffle things a little bit



commit 50bea3732005e24789120ecd87c389a5e6eaec14
Author: Matthias Clasen <mclasen redhat com>
Date:   Sat Sep 30 11:04:16 2017 -0400

    Reshuffle things a little bit
    
    Instead of having a function with lots of arguments in
    GskVulkanRender that we call from GskVulkanRenderPass which
    then just calls back into GskVulkanRenderPass, just create
    the new render pass object locally, and an api to add it
    to the list that GskVulkanRender keeps. This makes it
    a lot easier to preserve all the relevant parameters from
    the parent render pass.

 gsk/gskvulkanrender.c        |   34 +---------------------------------
 gsk/gskvulkanrenderpass.c    |   22 +++++++++++++++++++++-
 gsk/gskvulkanrenderprivate.h |    9 ++-------
 3 files changed, 24 insertions(+), 41 deletions(-)
---
diff --git a/gsk/gskvulkanrender.c b/gsk/gskvulkanrender.c
index d4f4e4e..06914b1 100644
--- a/gsk/gskvulkanrender.c
+++ b/gsk/gskvulkanrender.c
@@ -310,7 +310,7 @@ gsk_vulkan_render_add_cleanup_image (GskVulkanRender *self,
   self->cleanup_images = g_slist_prepend (self->cleanup_images, image);
 }
 
-static void
+void
 gsk_vulkan_render_add_render_pass (GskVulkanRender     *self,
                                    GskVulkanRenderPass *pass)
 {
@@ -344,38 +344,6 @@ gsk_vulkan_render_add_node (GskVulkanRender *self,
 }
 
 void
-gsk_vulkan_render_add_node_for_texture (GskVulkanRender       *self,
-                                        GskRenderNode         *node,
-                                        const graphene_matrix_t *mv,
-                                        const graphene_rect_t *bounds,
-                                        GskVulkanImage        *target,
-                                        VkSemaphore            semaphore)
-{
-  GskVulkanRenderPass *pass;
-  cairo_region_t *clip;
-
-  clip = cairo_region_create_rectangle (&(cairo_rectangle_int_t) {
-                                         0, 0,
-                                         gsk_vulkan_image_get_width (target),
-                                         gsk_vulkan_image_get_height (target)
-                                     });
-
-  pass = gsk_vulkan_render_pass_new (self->vulkan,
-                                     target,
-                                     1,
-                                     mv,
-                                     bounds,
-                                     clip,
-                                     semaphore);
-
-  cairo_region_destroy (clip);
-
-  gsk_vulkan_render_add_render_pass (self, pass);
-
-  gsk_vulkan_render_pass_add (pass, self, node);
-}
-
-void
 gsk_vulkan_render_upload (GskVulkanRender *self)
 {
   GList *l;
diff --git a/gsk/gskvulkanrenderpass.c b/gsk/gskvulkanrenderpass.c
index 56fb8b2..6b10345 100644
--- a/gsk/gskvulkanrenderpass.c
+++ b/gsk/gskvulkanrenderpass.c
@@ -689,6 +689,8 @@ gsk_vulkan_render_pass_get_node_as_texture (GskVulkanRenderPass   *self,
           {
             VkSemaphore semaphore;
             graphene_rect_t view;
+            cairo_region_t *clip;
+            GskVulkanRenderPass *pass;
 
             graphene_matrix_transform_bounds (&self->mv, bounds, &view);
 
@@ -715,7 +717,25 @@ gsk_vulkan_render_pass_get_node_as_texture (GskVulkanRenderPass   *self,
                                &semaphore);
 
             g_array_append_val (self->wait_semaphores, semaphore);
-            gsk_vulkan_render_add_node_for_texture (render, node, &self->mv, &view, result, semaphore);
+
+            clip = cairo_region_create_rectangle (&(cairo_rectangle_int_t) {
+                                                  0, 0,
+                                                  gsk_vulkan_image_get_width (result),
+                                                  gsk_vulkan_image_get_height (result)
+                                                  });
+
+            pass = gsk_vulkan_render_pass_new (self->vulkan,
+                                               result,
+                                               1,
+                                               &self->mv,
+                                               &view,
+                                               clip,
+                                               semaphore);
+
+            cairo_region_destroy (clip);
+
+            gsk_vulkan_render_add_render_pass (render, pass);
+            gsk_vulkan_render_pass_add (pass, render, node);
             gsk_vulkan_render_add_cleanup_image (render, result);
 
             return result;
diff --git a/gsk/gskvulkanrenderprivate.h b/gsk/gskvulkanrenderprivate.h
index 09751cb..1455bb7 100644
--- a/gsk/gskvulkanrenderprivate.h
+++ b/gsk/gskvulkanrenderprivate.h
@@ -69,13 +69,8 @@ void                    gsk_vulkan_render_add_cleanup_image             (GskVulk
 void                    gsk_vulkan_render_add_node                      (GskVulkanRender        *self,
                                                                          GskRenderNode          *node);
 
-void                    gsk_vulkan_render_add_node_for_texture          (GskVulkanRender        *self,
-                                                                         GskRenderNode          *node,
-                                                                         const graphene_matrix_t *mv,
-                                                                         const graphene_rect_t *bounds,
-                                                                         GskVulkanImage        *target,
-                                                                         VkSemaphore            semaphore);
-
+void                    gsk_vulkan_render_add_render_pass               (GskVulkanRender        *self,
+                                                                         GskVulkanRenderPass    *pass);
 
 void                    gsk_vulkan_render_upload                        (GskVulkanRender        *self);
 


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