commit 558f094efbdba383f357773f48df421b91d3eb66
parent f790c5a96a005656c10d4816184ca31cc29e4b89
Author: Michael Forney <mforney@mforney.org>
Date: Mon, 20 Jan 2014 20:12:39 -0800
compositor: Rework schedule_updates
Diffstat:
2 files changed, 9 insertions(+), 28 deletions(-)
diff --git a/libswc/compositor.c b/libswc/compositor.c
@@ -385,19 +385,22 @@ static void update_extents(struct view * view)
view->border.damaged = true;
}
+static void schedule_updates(struct swc_compositor * compositor, uint32_t screens)
+{
+ if (compositor->scheduled_updates == 0)
+ wl_event_loop_add_idle(swc.event_loop, &perform_update, NULL);
+
+ compositor->scheduled_updates |= screens;
+}
+
static bool update(struct swc_view * base)
{
struct view * view = (void *) base;
- struct swc_screen_internal * screen;
if (!view->base.visible)
return false;
- wl_list_for_each(screen, &swc.screens, link)
- {
- if (view->base.screens & swc_screen_mask(screen))
- swc_compositor_schedule_update(view->compositor, screen);
- }
+ schedule_updates(view->compositor, view->base.screens);
return true;
}
@@ -855,22 +858,3 @@ void swc_compositor_finish(struct swc_compositor * compositor)
{
}
-void swc_compositor_schedule_update(struct swc_compositor * compositor,
- struct swc_screen_internal * screen)
-{
- bool update_scheduled = compositor->scheduled_updates != 0;
-
- if (compositor->scheduled_updates & swc_screen_mask(screen))
- return;
-
- compositor->scheduled_updates |= swc_screen_mask(screen);
-
- if (!update_scheduled)
- {
- struct wl_event_loop * event_loop;
-
- event_loop = wl_display_get_event_loop(compositor->display);
- wl_event_loop_add_idle(event_loop, &perform_update, compositor);
- }
-}
-
diff --git a/libswc/compositor.h b/libswc/compositor.h
@@ -36,9 +36,6 @@ bool swc_compositor_initialize(struct swc_compositor * compositor,
void swc_compositor_finish(struct swc_compositor * compositor);
-void swc_compositor_schedule_update(struct swc_compositor * compositor,
- struct swc_screen_internal * screen);
-
bool swc_compositor_add_surface(struct swc_compositor * compositor,
struct swc_surface * surface);
bool swc_compositor_remove_surface(struct swc_compositor * compositor,