commit 558f094
Michael Forney
·
2014-01-21 04:12:39 +0000 UTC
parent f790c5a
compositor: Rework schedule_updates
2 files changed,
+9,
-28
+9,
-25
1@@ -385,19 +385,22 @@ static void update_extents(struct view * view)
2 view->border.damaged = true;
3 }
4
5+static void schedule_updates(struct swc_compositor * compositor, uint32_t screens)
6+{
7+ if (compositor->scheduled_updates == 0)
8+ wl_event_loop_add_idle(swc.event_loop, &perform_update, NULL);
9+
10+ compositor->scheduled_updates |= screens;
11+}
12+
13 static bool update(struct swc_view * base)
14 {
15 struct view * view = (void *) base;
16- struct swc_screen_internal * screen;
17
18 if (!view->base.visible)
19 return false;
20
21- wl_list_for_each(screen, &swc.screens, link)
22- {
23- if (view->base.screens & swc_screen_mask(screen))
24- swc_compositor_schedule_update(view->compositor, screen);
25- }
26+ schedule_updates(view->compositor, view->base.screens);
27
28 return true;
29 }
30@@ -855,22 +858,3 @@ void swc_compositor_finish(struct swc_compositor * compositor)
31 {
32 }
33
34-void swc_compositor_schedule_update(struct swc_compositor * compositor,
35- struct swc_screen_internal * screen)
36-{
37- bool update_scheduled = compositor->scheduled_updates != 0;
38-
39- if (compositor->scheduled_updates & swc_screen_mask(screen))
40- return;
41-
42- compositor->scheduled_updates |= swc_screen_mask(screen);
43-
44- if (!update_scheduled)
45- {
46- struct wl_event_loop * event_loop;
47-
48- event_loop = wl_display_get_event_loop(compositor->display);
49- wl_event_loop_add_idle(event_loop, &perform_update, compositor);
50- }
51-}
52-
+0,
-3
1@@ -36,9 +36,6 @@ bool swc_compositor_initialize(struct swc_compositor * compositor,
2
3 void swc_compositor_finish(struct swc_compositor * compositor);
4
5-void swc_compositor_schedule_update(struct swc_compositor * compositor,
6- struct swc_screen_internal * screen);
7-
8 bool swc_compositor_add_surface(struct swc_compositor * compositor,
9 struct swc_surface * surface);
10 bool swc_compositor_remove_surface(struct swc_compositor * compositor,