[mutter] compositor: Initiate cogl context field on creation



commit a465e4c5b8e4ea9de71c02081ee481d088f0b015
Author: Jonas Ådahl <jadahl gmail com>
Date:   Wed Jul 6 17:05:56 2016 +0800

    compositor: Initiate cogl context field on creation
    
    There will only ever be one context; just get it from clutter instead
    of waiting for we interact with a framebuffer.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=768976

 src/backends/meta-backend-private.h |    2 ++
 src/backends/meta-backend.c         |    2 +-
 src/compositor/compositor.c         |    6 ++++--
 3 files changed, 7 insertions(+), 3 deletions(-)
---
diff --git a/src/backends/meta-backend-private.h b/src/backends/meta-backend-private.h
index f313585..109e43f 100644
--- a/src/backends/meta-backend-private.h
+++ b/src/backends/meta-backend-private.h
@@ -138,4 +138,6 @@ gboolean meta_backend_get_relative_motion_deltas (MetaBackend *backend,
 void meta_backend_set_client_pointer_constraint (MetaBackend *backend,
                                                  MetaPointerConstraint *constraint);
 
+ClutterBackend * meta_backend_get_clutter_backend (MetaBackend *backend);
+
 #endif /* META_BACKEND_PRIVATE_H */
diff --git a/src/backends/meta-backend.c b/src/backends/meta-backend.c
index e04f50f..2ad6b84 100644
--- a/src/backends/meta-backend.c
+++ b/src/backends/meta-backend.c
@@ -671,7 +671,7 @@ static GSourceFuncs event_funcs = {
   event_dispatch
 };
 
-static ClutterBackend *
+ClutterBackend *
 meta_backend_get_clutter_backend (MetaBackend *backend)
 {
   MetaBackendPrivate *priv = meta_backend_get_instance_private (backend);
diff --git a/src/compositor/compositor.c b/src/compositor/compositor.c
index b2f4f93..49b039d 100644
--- a/src/compositor/compositor.c
+++ b/src/compositor/compositor.c
@@ -1051,7 +1051,6 @@ meta_pre_paint_func (gpointer data)
                                                                     frame_callback,
                                                                     compositor,
                                                                     NULL);
-      compositor->context = cogl_framebuffer_get_context (COGL_FRAMEBUFFER (compositor->onscreen));
     }
 
   if (compositor->windows == NULL)
@@ -1159,10 +1158,13 @@ on_shadow_factory_changed (MetaShadowFactory *factory,
 MetaCompositor *
 meta_compositor_new (MetaDisplay *display)
 {
-  MetaCompositor        *compositor;
+  MetaBackend *backend = meta_get_backend ();
+  ClutterBackend *clutter_backend = meta_backend_get_clutter_backend (backend);
+  MetaCompositor *compositor;
 
   compositor = g_new0 (MetaCompositor, 1);
   compositor->display = display;
+  compositor->context = clutter_backend->cogl_context;
 
   if (g_getenv("META_DISABLE_MIPMAPS"))
     compositor->no_mipmaps = TRUE;


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]