summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJasper St. Pierre <jstpierre@mecheye.net>2013-12-03 14:43:53 -0500
committerJasper St. Pierre <jstpierre@mecheye.net>2013-12-03 14:49:40 -0500
commit0924c7d61b4ca1b81a9d95c9b5460a0334852437 (patch)
treef1919a438a0092540ca1798ba3670b88f1c508c6
parent2746608eb22529d5f91d633c483f3e1701e5877e (diff)
downloadmutter-0924c7d61b4ca1b81a9d95c9b5460a0334852437.tar.gz
wayland: Use a stage paint callback instead of a signal handler on "paint"
This is much more appropriate...
-rw-r--r--src/compositor/compositor.c2
-rw-r--r--src/wayland/meta-wayland-private.h1
-rw-r--r--src/wayland/meta-wayland.c8
3 files changed, 5 insertions, 6 deletions
diff --git a/src/compositor/compositor.c b/src/compositor/compositor.c
index 93464e1f1..325a4ecbb 100644
--- a/src/compositor/compositor.c
+++ b/src/compositor/compositor.c
@@ -637,6 +637,8 @@ after_stage_paint (ClutterStage *stage,
for (l = info->windows; l; l = l->next)
meta_window_actor_post_paint (l->data);
+
+ meta_wayland_compositor_paint_finished (meta_wayland_compositor_get_default ());
}
static void
diff --git a/src/wayland/meta-wayland-private.h b/src/wayland/meta-wayland-private.h
index d13090bb3..e444ae596 100644
--- a/src/wayland/meta-wayland-private.h
+++ b/src/wayland/meta-wayland-private.h
@@ -109,5 +109,6 @@ void meta_wayland_buffer_reference (MetaWaylandBuff
void meta_wayland_compositor_update (MetaWaylandCompositor *compositor,
const ClutterEvent *event);
+void meta_wayland_compositor_paint_finished (MetaWaylandCompositor *compositor);
#endif /* META_WAYLAND_PRIVATE_H */
diff --git a/src/wayland/meta-wayland.c b/src/wayland/meta-wayland.c
index 3d1961a81..f67af7e60 100644
--- a/src/wayland/meta-wayland.c
+++ b/src/wayland/meta-wayland.c
@@ -500,11 +500,9 @@ const static struct wl_compositor_interface meta_wayland_compositor_interface =
meta_wayland_compositor_create_region
};
-static void
-paint_finished_cb (ClutterActor *self, void *user_data)
+void
+meta_wayland_compositor_paint_finished (MetaWaylandCompositor *compositor)
{
- MetaWaylandCompositor *compositor = user_data;
-
while (!wl_list_empty (&compositor->frame_callbacks))
{
MetaWaylandFrameCallback *callback =
@@ -711,8 +709,6 @@ meta_wayland_init (void)
compositor->outputs = meta_wayland_compositor_update_outputs (compositor, monitors);
compositor->stage = meta_wayland_stage_new ();
- g_signal_connect_after (compositor->stage, "paint",
- G_CALLBACK (paint_finished_cb), compositor);
g_signal_connect (compositor->stage, "destroy",
G_CALLBACK (stage_destroy_cb), NULL);