[metacity] compositor: check common extensions in MetaCompositor



commit 546ee4a831d3b0b5284e4c3cd4e07cf41313ba8b
Author: Alberts Muktupāvels <alberts muktupavels gmail com>
Date:   Thu Mar 16 17:02:34 2017 +0200

    compositor: check common extensions in MetaCompositor

 src/compositor/meta-compositor-private.h |    3 -
 src/compositor/meta-compositor-vulkan.c  |    3 -
 src/compositor/meta-compositor-xrender.c |    3 -
 src/compositor/meta-compositor.c         |   76 ++++++++++++++++--------------
 4 files changed, 41 insertions(+), 44 deletions(-)
---
diff --git a/src/compositor/meta-compositor-private.h b/src/compositor/meta-compositor-private.h
index 3212446..8f4cb09 100644
--- a/src/compositor/meta-compositor-private.h
+++ b/src/compositor/meta-compositor-private.h
@@ -71,9 +71,6 @@ struct _MetaCompositorClass
                                                 GList              *stack);
 };
 
-gboolean     meta_compositor_check_extensions   (MetaCompositor  *compositor,
-                                                 GError         **error);
-
 gboolean     meta_compositor_set_selection      (MetaCompositor  *compositor,
                                                  GError         **error);
 
diff --git a/src/compositor/meta-compositor-vulkan.c b/src/compositor/meta-compositor-vulkan.c
index 7e78bce..1a53554 100644
--- a/src/compositor/meta-compositor-vulkan.c
+++ b/src/compositor/meta-compositor-vulkan.c
@@ -701,9 +701,6 @@ meta_compositor_vulkan_manage (MetaCompositor  *compositor,
 
   vulkan = META_COMPOSITOR_VULKAN (compositor);
 
-  if (!meta_compositor_check_extensions (compositor, error))
-    return FALSE;
-
   enumerate_instance_layers (vulkan);
   enumerate_instance_extensions (vulkan);
 
diff --git a/src/compositor/meta-compositor-xrender.c b/src/compositor/meta-compositor-xrender.c
index b944470..88935aa 100644
--- a/src/compositor/meta-compositor-xrender.c
+++ b/src/compositor/meta-compositor-xrender.c
@@ -2524,9 +2524,6 @@ meta_compositor_xrender_manage (MetaCompositor  *compositor,
   XRenderPictFormat *visual_format;
   int screen_number = meta_screen_get_screen_number (screen);
 
-  if (!meta_compositor_check_extensions (compositor, error))
-    return FALSE;
-
   if (!display->have_render)
     {
       g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED,
diff --git a/src/compositor/meta-compositor.c b/src/compositor/meta-compositor.c
index 55bf002..789ac3b 100644
--- a/src/compositor/meta-compositor.c
+++ b/src/compositor/meta-compositor.c
@@ -64,6 +64,41 @@ G_DEFINE_ABSTRACT_TYPE_WITH_CODE (MetaCompositor, meta_compositor, G_TYPE_OBJECT
                                                          initable_iface_init))
 
 static gboolean
+check_common_extensions (MetaCompositor  *compositor,
+                         GError         **error)
+{
+  MetaCompositorPrivate *priv;
+
+  priv = meta_compositor_get_instance_private (compositor);
+
+  if (!priv->display->have_composite)
+    {
+      g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED,
+                   "Missing composite extension required for compositing");
+
+      return FALSE;
+    }
+
+  if (!priv->display->have_damage)
+    {
+      g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED,
+                   "Missing damage extension required for compositing");
+
+      return FALSE;
+    }
+
+  if (!priv->display->have_xfixes)
+    {
+      g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED,
+                   "Missing xfixes extension required for compositing");
+
+      return FALSE;
+    }
+
+  return TRUE;
+}
+
+static gboolean
 meta_compositor_initable_init (GInitable     *initable,
                                GCancellable  *cancellable,
                                GError       **error)
@@ -74,6 +109,12 @@ meta_compositor_initable_init (GInitable     *initable,
   compositor = META_COMPOSITOR (initable);
   compositor_class = META_COMPOSITOR_GET_CLASS (compositor);
 
+  if (!META_IS_COMPOSITOR_NONE (compositor))
+    {
+      if (!check_common_extensions (compositor, error))
+        return FALSE;
+    }
+
   return compositor_class->manage (compositor, error);
 }
 
@@ -410,41 +451,6 @@ meta_compositor_is_composited (MetaCompositor *compositor)
 }
 
 gboolean
-meta_compositor_check_extensions (MetaCompositor  *compositor,
-                                  GError         **error)
-{
-  MetaCompositorPrivate *priv;
-
-  priv = meta_compositor_get_instance_private (compositor);
-
-  if (!priv->display->have_composite)
-    {
-      g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED,
-                   "Missing composite extension required for compositing");
-
-      return FALSE;
-    }
-
-  if (!priv->display->have_damage)
-    {
-      g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED,
-                   "Missing damage extension required for compositing");
-
-      return FALSE;
-    }
-
-  if (!priv->display->have_xfixes)
-    {
-      g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED,
-                   "Missing xfixes extension required for compositing");
-
-      return FALSE;
-    }
-
-  return TRUE;
-}
-
-gboolean
 meta_compositor_set_selection (MetaCompositor  *compositor,
                                GError         **error)
 {


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