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,