summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/compositor/meta-compositor-private.h2
-rw-r--r--src/compositor/meta-compositor.c14
2 files changed, 16 insertions, 0 deletions
diff --git a/src/compositor/meta-compositor-private.h b/src/compositor/meta-compositor-private.h
index baa60554..93400b6b 100644
--- a/src/compositor/meta-compositor-private.h
+++ b/src/compositor/meta-compositor-private.h
@@ -44,6 +44,8 @@ struct _MetaCompositorClass
void (* sync_window_geometry) (MetaCompositor *compositor,
MetaSurface *surface);
+ gboolean (* ready_to_redraw) (MetaCompositor *compositor);
+
void (* pre_paint) (MetaCompositor *compositor);
void (* redraw) (MetaCompositor *compositor,
diff --git a/src/compositor/meta-compositor.c b/src/compositor/meta-compositor.c
index 25fad9e5..f5ad2bc0 100644
--- a/src/compositor/meta-compositor.c
+++ b/src/compositor/meta-compositor.c
@@ -173,6 +173,13 @@ redraw_idle_cb (gpointer user_data)
compositor = META_COMPOSITOR (user_data);
priv = meta_compositor_get_instance_private (compositor);
+ if (!META_COMPOSITOR_GET_CLASS (compositor)->ready_to_redraw (compositor))
+ {
+ priv->redraw_id = 0;
+
+ return G_SOURCE_REMOVE;
+ }
+
META_COMPOSITOR_GET_CLASS (compositor)->pre_paint (compositor);
if (priv->all_damage != None)
@@ -337,6 +344,12 @@ meta_compositor_set_property (GObject *object,
}
}
+static gboolean
+meta_compositor_ready_to_redraw (MetaCompositor *compositor)
+{
+ return TRUE;
+}
+
static void
meta_compositor_pre_paint (MetaCompositor *compositor)
{
@@ -379,6 +392,7 @@ meta_compositor_class_init (MetaCompositorClass *compositor_class)
object_class->get_property = meta_compositor_get_property;
object_class->set_property = meta_compositor_set_property;
+ compositor_class->ready_to_redraw = meta_compositor_ready_to_redraw;
compositor_class->pre_paint = meta_compositor_pre_paint;
install_properties (object_class);