From fee53a2993db3795bd7ffbb4e878c807ccdaa80c Mon Sep 17 00:00:00 2001
From: Neil Roberts <neil@linux.intel.com>
Date: Wed, 21 Dec 2011 15:13:53 +0000
Subject: [PATCH] clutter-backend: Use the Cogl main loop mechanism

Cogl now requires that all applications integrate their main loop with
Cogl so that it can listen for events from winsys. This patch just
adds Cogl's GSource to the main loop.

Reviewed-by: Emmanuele Bassi <ebassi@linux.intel.com>
Reviewed-by: Robert Bragg <robert@linux.intel.com>
---
 clutter/clutter-backend-private.h | 1 +
 clutter/clutter-backend.c         | 6 ++++++
 2 files changed, 7 insertions(+)

diff --git a/clutter/clutter-backend-private.h b/clutter/clutter-backend-private.h
index 32ebba220..72563a3b1 100644
--- a/clutter/clutter-backend-private.h
+++ b/clutter/clutter-backend-private.h
@@ -44,6 +44,7 @@ struct _ClutterBackend
   CoglRenderer *cogl_renderer;
   CoglDisplay *cogl_display;
   CoglContext *cogl_context;
+  GSource *cogl_source;
 
   ClutterDeviceManager *device_manager;
 
diff --git a/clutter/clutter-backend.c b/clutter/clutter-backend.c
index 9d14df3fa..488008f7b 100644
--- a/clutter/clutter-backend.c
+++ b/clutter/clutter-backend.c
@@ -142,6 +142,8 @@ clutter_backend_finalize (GObject *gobject)
 {
   ClutterBackend *backend = CLUTTER_BACKEND (gobject);
 
+  g_source_destroy (backend->cogl_source);
+
   g_free (backend->priv->font_name);
   clutter_backend_set_font_options (backend, NULL);
 
@@ -324,6 +326,10 @@ clutter_backend_real_create_context (ClutterBackend  *backend,
   if (backend->cogl_context == NULL)
     goto error;
 
+  backend->cogl_source = cogl_glib_source_new (backend->cogl_context,
+                                               G_PRIORITY_DEFAULT);
+  g_source_attach (backend->cogl_source, NULL);
+
   /* the display owns the renderer and the swap chain */
   cogl_object_unref (backend->cogl_renderer);
   cogl_object_unref (swap_chain);