commit 452e492

Michael Forney  ·  2014-02-01 07:18:31 +0000 UTC
parent 9ccfa62
compositor: Replace render_target with target
1 files changed,  +17, -25
+17, -25
  1@@ -57,6 +57,8 @@ struct target
  2     struct wld_buffer * next_buffer, * current_buffer;
  3     struct swc_view * view;
  4     struct wl_listener view_listener;
  5+    uint32_t mask;
  6+
  7     struct wl_listener screen_listener;
  8 };
  9 
 10@@ -238,11 +240,13 @@ static struct target * target_new(struct swc_screen_internal * screen)
 11     target->view = &screen->planes.framebuffer.view;
 12     target->view_listener.notify = &handle_screen_view_event;
 13     wl_signal_add(&target->view->event_signal, &target->view_listener);
 14-    target->screen_listener.notify = &handle_screen_event;
 15-    wl_signal_add(&screen->base.event_signal, &target->screen_listener);
 16     target->current_buffer = NULL;
 17+    target->mask = swc_screen_mask(screen);
 18     target_swap_buffers(target);
 19 
 20+    target->screen_listener.notify = &handle_screen_event;
 21+    wl_signal_add(&screen->base.event_signal, &target->screen_listener);
 22+
 23     return target;
 24 
 25 error1:
 26@@ -253,14 +257,7 @@ error0:
 27 
 28 /* Rendering {{{ */
 29 
 30-struct render_target
 31-{
 32-    struct wld_surface * surface;
 33-    const struct swc_rectangle * geometry;
 34-    uint32_t mask;
 35-};
 36-
 37-static void repaint_view(struct render_target * target, struct view * view,
 38+static void repaint_view(struct target * target, struct view * view,
 39                          pixman_region32_t * damage)
 40 {
 41     pixman_region32_t view_region, view_damage, border_damage;
 42@@ -285,8 +282,8 @@ static void repaint_view(struct render_target * target, struct view * view,
 43     {
 44         pixman_region32_translate(&view_damage, -geometry->x, -geometry->y);
 45         wld_copy_region(swc.drm->renderer, view->wld,
 46-                        geometry->x - target->geometry->x,
 47-                        geometry->y - target->geometry->y, &view_damage);
 48+                        geometry->x - target->view->geometry.x,
 49+                        geometry->y - target->view->geometry.y, &view_damage);
 50     }
 51 
 52     pixman_region32_fini(&view_damage);
 53@@ -297,14 +294,15 @@ static void repaint_view(struct render_target * target, struct view * view,
 54         DEBUG("\t\tRedrawing border\n");
 55 
 56         pixman_region32_translate(&border_damage,
 57-                                  -target->geometry->x, -target->geometry->y);
 58+                                  -target->view->geometry.x,
 59+                                  -target->view->geometry.y);
 60         wld_fill_region(swc.drm->renderer, view->border.color, &border_damage);
 61     }
 62 
 63     pixman_region32_fini(&border_damage);
 64 }
 65 
 66-static void renderer_repaint(struct render_target * target,
 67+static void renderer_repaint(struct target * target,
 68                              pixman_region32_t * damage,
 69                              pixman_region32_t * base_damage,
 70                              struct wl_list * views)
 71@@ -312,8 +310,8 @@ static void renderer_repaint(struct render_target * target,
 72     struct view * view;
 73 
 74     DEBUG("Rendering to target { x: %d, y: %d, w: %u, h: %u }\n",
 75-          target->geometry->x, target->geometry->y,
 76-          target->geometry->width, target->geometry->height);
 77+          target->view->geometry.x, target->view->geometry.y,
 78+          target->view->geometry.width, target->view->geometry.height);
 79 
 80     wld_set_target_surface(swc.drm->renderer, target->surface);
 81 
 82@@ -321,7 +319,8 @@ static void renderer_repaint(struct render_target * target,
 83     if (pixman_region32_not_empty(base_damage))
 84     {
 85         pixman_region32_translate(base_damage,
 86-                                  -target->geometry->x, -target->geometry->y);
 87+                                  -target->view->geometry.x,
 88+                                  -target->view->geometry.y);
 89         wld_fill_region(swc.drm->renderer, 0xff000000, base_damage);
 90     }
 91 
 92@@ -744,7 +743,6 @@ static void update_screen(struct swc_screen_internal * screen)
 93     if (compositor.pending_flips & swc_screen_mask(screen))
 94         return;
 95 
 96-    struct render_target render_target;
 97     pixman_region32_t * total_damage, base_damage;
 98 
 99     total_damage = wld_surface_damage(target->surface,
100@@ -752,13 +750,7 @@ static void update_screen(struct swc_screen_internal * screen)
101     pixman_region32_translate(total_damage, geometry->x, geometry->y);
102     pixman_region32_init(&base_damage);
103     pixman_region32_subtract(&base_damage, total_damage, &compositor.opaque);
104-
105-    render_target.surface = target->surface;
106-    render_target.mask = swc_screen_mask(screen);
107-    render_target.geometry = geometry;
108-
109-    renderer_repaint(&render_target, total_damage, &base_damage,
110-                     &compositor.views);
111+    renderer_repaint(target, total_damage, &base_damage, &compositor.views);
112     pixman_region32_fini(&base_damage);
113     target_swap_buffers(target);
114 }