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 }