[mutter] context: Add create_backend() vfunc



commit 6e4d3e0f85f36799d9b3cdc04b0f7dbb533b1e9b
Author: Jonas Ã…dahl <jadahl gmail com>
Date:   Tue Mar 2 10:49:43 2021 +0100

    context: Add create_backend() vfunc
    
    This lets the context implementation create a backend. Will later be
    used in a 'setup' phase.
    
    Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1861>

 src/core/meta-context-private.h |  4 ++++
 src/tests/meson.build           | 26 +++++++---------------
 src/tests/meta-context-test.c   | 49 +++++++++++++++++++++++++++++++++++++++++
 3 files changed, 61 insertions(+), 18 deletions(-)
---
diff --git a/src/core/meta-context-private.h b/src/core/meta-context-private.h
index 76f0675e1e..3046476f9f 100644
--- a/src/core/meta-context-private.h
+++ b/src/core/meta-context-private.h
@@ -21,6 +21,7 @@
 #ifndef META_CONTEXT_PRIVATE_H
 #define META_CONTEXT_PRIVATE_H
 
+#include "meta/meta-backend.h"
 #include "meta/meta-context.h"
 #include "meta/meta-enums.h"
 
@@ -34,6 +35,9 @@ struct _MetaContextClass
                           GError       **error);
 
   MetaCompositorType (* get_compositor_type) (MetaContext *context);
+
+  MetaBackend * (* create_backend) (MetaContext  *context,
+                                    GError      **error);
 };
 
 #endif /* META_CONTEXT_PRIVATE_H */
diff --git a/src/tests/meson.build b/src/tests/meson.build
index bf9d63190f..a7c05fb715 100644
--- a/src/tests/meson.build
+++ b/src/tests/meson.build
@@ -43,8 +43,16 @@ test_env.set('G_TEST_BUILDDIR', meson.build_root())
 test_env.set('MUTTER_TEST_PLUGIN_PATH', '@0@'.format(default_plugin.full_path()))
 
 test_context_sources = [
+  'meta-backend-test.c',
+  'meta-backend-test.h',
   'meta-context-test.c',
   'meta-context-test.h',
+  'meta-gpu-test.c',
+  'meta-gpu-test.h',
+  'meta-monitor-manager-test.c',
+  'meta-monitor-manager-test.h',
+  'monitor-test-utils.c',
+  'monitor-test-utils.h',
   'test-utils.c',
   'test-utils.h',
 ]
@@ -82,12 +90,6 @@ unit_tests = executable('mutter-test-unit-tests',
     'unit-tests.c',
     'boxes-tests.c',
     'boxes-tests.h',
-    'meta-backend-test.c',
-    'meta-backend-test.h',
-    'meta-gpu-test.c',
-    'meta-gpu-test.h',
-    'meta-monitor-manager-test.c',
-    'meta-monitor-manager-test.h',
     'meta-wayland-test-driver.c',
     'meta-wayland-test-driver.h',
     'monitor-config-migration-unit-tests.c',
@@ -116,12 +118,6 @@ headless_start_test = executable('mutter-headless-start-test',
   sources: [
     test_context_sources,
     'headless-start-test.c',
-    'meta-backend-test.c',
-    'meta-backend-test.h',
-    'meta-gpu-test.c',
-    'meta-gpu-test.h',
-    'meta-monitor-manager-test.c',
-    'meta-monitor-manager-test.h',
   ],
   include_directories: tests_includepath,
   c_args: tests_c_args,
@@ -133,12 +129,6 @@ headless_start_test = executable('mutter-headless-start-test',
 stage_view_tests = executable('mutter-stage-view-tests',
   sources: [
     test_context_sources,
-    'meta-backend-test.c',
-    'meta-backend-test.h',
-    'meta-gpu-test.c',
-    'meta-gpu-test.h',
-    'meta-monitor-manager-test.c',
-    'meta-monitor-manager-test.h',
     'monitor-test-utils.c',
     'monitor-test-utils.h',
     'stage-view-tests.c',
diff --git a/src/tests/meta-context-test.c b/src/tests/meta-context-test.c
index 936808f532..01376b61ee 100644
--- a/src/tests/meta-context-test.c
+++ b/src/tests/meta-context-test.c
@@ -22,10 +22,18 @@
 
 #include "tests/meta-context-test.h"
 
+#include <glib.h>
+#include <gio/gio.h>
+
+#include "tests/meta-backend-test.h"
 #include "tests/test-utils.h"
 #include "wayland/meta-wayland.h"
 #include "wayland/meta-xwayland.h"
 
+#ifdef HAVE_NATIVE_BACKEND
+#include "backends/native/meta-backend-native.h"
+#endif
+
 struct _MetaContextTest
 {
   GObject parent;
@@ -58,6 +66,46 @@ meta_context_test_get_compositor_type (MetaContext *context)
   return META_COMPOSITOR_TYPE_WAYLAND;
 }
 
+static MetaBackend *
+create_nested_backend (MetaContext  *context,
+                       GError      **error)
+{
+  return g_initable_new (META_TYPE_BACKEND_TEST,
+                         NULL, error,
+                         NULL);
+}
+
+#ifdef HAVE_NATIVE_BACKEND
+static MetaBackend *
+create_headless_backend (MetaContext  *context,
+                         GError      **error)
+{
+  return g_initable_new (META_TYPE_BACKEND_NATIVE,
+                         NULL, error,
+                         "headless", TRUE,
+                         NULL);
+}
+#endif /* HAVE_NATIVE_BACKEND */
+
+static MetaBackend *
+meta_context_test_create_backend (MetaContext  *context,
+                                  GError      **error)
+{
+  MetaContextTest *context_test = META_CONTEXT_TEST (context);
+
+  switch (context_test->type)
+    {
+    case META_CONTEXT_TEST_TYPE_NESTED:
+      return create_nested_backend (context, error);
+#ifdef HAVE_NATIVE_BACKEND
+    case META_CONTEXT_TEST_TYPE_HEADLESS:
+      return create_headless_backend (context, error);
+#endif /* HAVE_NATIVE_BACKEND */
+    }
+
+  g_assert_not_reached ();
+}
+
 MetaContext *
 meta_create_test_context (MetaContextTestType type)
 {
@@ -78,6 +126,7 @@ meta_context_test_class_init (MetaContextTestClass *klass)
 
   context_class->configure = meta_context_test_configure;
   context_class->get_compositor_type = meta_context_test_get_compositor_type;
+  context_class->create_backend = meta_context_test_create_backend;
 }
 
 static void


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