[metacity] compositor: remove meta_compositor_new
- From: Alberts Muktupāvels <muktupavels src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [metacity] compositor: remove meta_compositor_new
- Date: Fri, 13 Sep 2019 12:37:56 +0000 (UTC)
commit c2a805a5a631f01f2b6c0455228ed9388d0fd458
Author: Alberts Muktupāvels <alberts muktupavels gmail com>
Date: Fri Sep 13 14:45:18 2019 +0300
compositor: remove meta_compositor_new
A base type shouldn't know about subtypes. Move needed functionality
to MetaDisplay.
src/compositor/meta-compositor-none.c | 9 ++++
src/compositor/meta-compositor-none.h | 3 ++
src/compositor/meta-compositor-vulkan.c | 9 ++++
src/compositor/meta-compositor-vulkan.h | 3 ++
src/compositor/meta-compositor-xrender.c | 9 ++++
src/compositor/meta-compositor-xrender.h | 3 ++
src/compositor/meta-compositor.c | 48 +----------------
src/core/display.c | 92 ++++++++++++++++++++++++++------
src/include/meta-compositor.h | 3 --
9 files changed, 113 insertions(+), 66 deletions(-)
---
diff --git a/src/compositor/meta-compositor-none.c b/src/compositor/meta-compositor-none.c
index e60dba5a..fbfbc297 100644
--- a/src/compositor/meta-compositor-none.c
+++ b/src/compositor/meta-compositor-none.c
@@ -163,3 +163,12 @@ meta_compositor_none_init (MetaCompositorNone *none)
{
meta_compositor_set_composited (META_COMPOSITOR (none), FALSE);
}
+
+MetaCompositor *
+meta_compositor_none_new (MetaDisplay *display,
+ GError **error)
+{
+ return g_initable_new (META_TYPE_COMPOSITOR_NONE, NULL, error,
+ "display", display,
+ NULL);
+}
diff --git a/src/compositor/meta-compositor-none.h b/src/compositor/meta-compositor-none.h
index 2f6478db..38fdb9ea 100644
--- a/src/compositor/meta-compositor-none.h
+++ b/src/compositor/meta-compositor-none.h
@@ -26,6 +26,9 @@ G_BEGIN_DECLS
G_DECLARE_FINAL_TYPE (MetaCompositorNone, meta_compositor_none,
META, COMPOSITOR_NONE, MetaCompositor)
+MetaCompositor *meta_compositor_none_new (MetaDisplay *display,
+ GError **error);
+
G_END_DECLS
#endif
diff --git a/src/compositor/meta-compositor-vulkan.c b/src/compositor/meta-compositor-vulkan.c
index 09883afa..e23d9dd9 100644
--- a/src/compositor/meta-compositor-vulkan.c
+++ b/src/compositor/meta-compositor-vulkan.c
@@ -1411,3 +1411,12 @@ meta_compositor_vulkan_init (MetaCompositorVulkan *vulkan)
{
meta_compositor_set_composited (META_COMPOSITOR (vulkan), TRUE);
}
+
+MetaCompositor *
+meta_compositor_vulkan_new (MetaDisplay *display,
+ GError **error)
+{
+ return g_initable_new (META_TYPE_COMPOSITOR_VULKAN, NULL, error,
+ "display", display,
+ NULL);
+}
diff --git a/src/compositor/meta-compositor-vulkan.h b/src/compositor/meta-compositor-vulkan.h
index f5a1c599..44831ff1 100644
--- a/src/compositor/meta-compositor-vulkan.h
+++ b/src/compositor/meta-compositor-vulkan.h
@@ -26,6 +26,9 @@ G_BEGIN_DECLS
G_DECLARE_FINAL_TYPE (MetaCompositorVulkan, meta_compositor_vulkan,
META, COMPOSITOR_VULKAN, MetaCompositor)
+MetaCompositor *meta_compositor_vulkan_new (MetaDisplay *display,
+ GError **error);
+
G_END_DECLS
#endif
diff --git a/src/compositor/meta-compositor-xrender.c b/src/compositor/meta-compositor-xrender.c
index 50f78c02..9a2f62ef 100644
--- a/src/compositor/meta-compositor-xrender.c
+++ b/src/compositor/meta-compositor-xrender.c
@@ -3154,3 +3154,12 @@ meta_compositor_xrender_init (MetaCompositorXRender *xrender)
{
meta_compositor_set_composited (META_COMPOSITOR (xrender), TRUE);
}
+
+MetaCompositor *
+meta_compositor_xrender_new (MetaDisplay *display,
+ GError **error)
+{
+ return g_initable_new (META_TYPE_COMPOSITOR_XRENDER, NULL, error,
+ "display", display,
+ NULL);
+}
diff --git a/src/compositor/meta-compositor-xrender.h b/src/compositor/meta-compositor-xrender.h
index 18ea6d14..49d6aa5f 100644
--- a/src/compositor/meta-compositor-xrender.h
+++ b/src/compositor/meta-compositor-xrender.h
@@ -26,6 +26,9 @@ G_BEGIN_DECLS
G_DECLARE_FINAL_TYPE (MetaCompositorXRender, meta_compositor_xrender,
META, COMPOSITOR_XRENDER, MetaCompositor)
+MetaCompositor *meta_compositor_xrender_new (MetaDisplay *display,
+ GError **error);
+
G_END_DECLS
#endif
diff --git a/src/compositor/meta-compositor.c b/src/compositor/meta-compositor.c
index be518911..abe81122 100644
--- a/src/compositor/meta-compositor.c
+++ b/src/compositor/meta-compositor.c
@@ -17,6 +17,7 @@
*/
#include "config.h"
+#include "meta-compositor-private.h"
#include <X11/extensions/shape.h>
#include <X11/extensions/Xcomposite.h>
@@ -24,9 +25,6 @@
#include "display-private.h"
#include "errors.h"
-#include "meta-compositor-none.h"
-#include "meta-compositor-xrender.h"
-#include "meta-compositor-vulkan.h"
#include "screen-private.h"
typedef struct
@@ -248,50 +246,6 @@ meta_compositor_init (MetaCompositor *compositor)
{
}
-MetaCompositor *
-meta_compositor_new (MetaCompositorType type,
- MetaDisplay *display)
-{
- GType gtype;
- MetaCompositor *compositor;
- GError *error;
-
- switch (type)
- {
- case META_COMPOSITOR_TYPE_NONE:
- gtype = META_TYPE_COMPOSITOR_NONE;
- break;
-
- case META_COMPOSITOR_TYPE_XRENDER:
- gtype = META_TYPE_COMPOSITOR_XRENDER;
- break;
-
- case META_COMPOSITOR_TYPE_VULKAN:
- gtype = META_TYPE_COMPOSITOR_VULKAN;
- break;
-
- default:
- g_assert_not_reached ();
- break;
- }
-
- error = NULL;
- compositor = g_initable_new (gtype, NULL, &error, "display", display, NULL);
-
- if (compositor == NULL)
- {
- g_warning ("Failed to create %s: %s", g_type_name (gtype), error->message);
- g_error_free (error);
-
- if (type != META_COMPOSITOR_TYPE_NONE)
- compositor = meta_compositor_new (META_COMPOSITOR_TYPE_NONE, display);
- }
-
- g_assert (compositor != NULL);
-
- return compositor;
-}
-
void
meta_compositor_add_window (MetaCompositor *compositor,
MetaWindow *window)
diff --git a/src/core/display.c b/src/core/display.c
index 4e150d29..1ddb4505 100644
--- a/src/core/display.c
+++ b/src/core/display.c
@@ -66,6 +66,10 @@
#include <X11/extensions/Xfixes.h>
#include <string.h>
+#include "compositor/meta-compositor-none.h"
+#include "compositor/meta-compositor-xrender.h"
+#include "compositor/meta-compositor-vulkan.h"
+
#define GRAB_OP_IS_WINDOW_SWITCH(g) \
(g == META_GRAB_OP_KEYBOARD_TABBING_NORMAL || \
g == META_GRAB_OP_KEYBOARD_TABBING_DOCK || \
@@ -256,23 +260,14 @@ notify_composited_cb (MetaCompositor *compositor,
meta_ui_set_composited (display->screen->ui, composited);
}
-static void
-update_compositor (MetaDisplay *display,
- gboolean composite_windows)
+static MetaCompositorType
+get_compositor_type (MetaDisplay *display)
{
const gchar *compositor;
MetaCompositorType type;
- gboolean old_composited;
- gboolean composited;
-
- old_composited = FALSE;
- if (display->compositor != NULL)
- {
- old_composited = meta_compositor_is_composited (display->compositor);
- g_object_unref (display->compositor);
- }
compositor = g_getenv ("META_COMPOSITOR");
+
if (compositor != NULL)
{
if (g_strcmp0 (compositor, "vulkan") == 0)
@@ -290,19 +285,84 @@ update_compositor (MetaDisplay *display,
type = META_COMPOSITOR_TYPE_NONE;
}
- display->compositor = meta_compositor_new (type, display);
- composited = meta_compositor_is_composited (display->compositor);
+ return type;
+}
+
+static MetaCompositor *
+create_compositor (MetaDisplay *display,
+ MetaCompositorType type,
+ GError **error)
+{
+ MetaCompositor *compositor;
+
+ compositor = NULL;
+
+ switch (type)
+ {
+ case META_COMPOSITOR_TYPE_NONE:
+ compositor = meta_compositor_none_new (display, error);
+ break;
+
+ case META_COMPOSITOR_TYPE_XRENDER:
+ compositor = meta_compositor_xrender_new (display, error);
+ break;
+
+ case META_COMPOSITOR_TYPE_VULKAN:
+ compositor = meta_compositor_vulkan_new (display, error);
+ break;
+
+ default:
+ g_assert_not_reached ();
+ break;
+ }
+
+ return compositor;
+}
+
+static void
+update_compositor (MetaDisplay *display,
+ gboolean composite_windows)
+{
+ GError *error;
+ gboolean old_composited;
+ gboolean composited;
+
+ old_composited = FALSE;
+ if (display->compositor != NULL)
+ {
+ old_composited = meta_compositor_is_composited (display->compositor);
+ g_object_unref (display->compositor);
+ }
+
+ error = NULL;
+ display->compositor = create_compositor (display,
+ get_compositor_type (display),
+ &error);
+
+ if (error != NULL)
+ {
+ g_warning ("Failed to create compositor: %s", error->message);
+ g_error_free (error);
+
+ g_assert (display->compositor == NULL);
+ display->compositor = create_compositor (display,
+ META_COMPOSITOR_TYPE_NONE,
+ NULL);
+
+ g_assert (display->compositor != NULL);
+ }
g_signal_connect (display->compositor, "notify::composited",
G_CALLBACK (notify_composited_cb), display);
+ composited = meta_compositor_is_composited (display->compositor);
+ meta_ui_set_composited (display->screen->ui, composited);
+
if (old_composited != composited)
meta_screen_foreach_window (display->screen, reframe_func, NULL);
if (composite_windows)
meta_screen_composite_all_windows (display->screen);
-
- meta_ui_set_composited (display->screen->ui, composited);
}
/**
diff --git a/src/include/meta-compositor.h b/src/include/meta-compositor.h
index 5668c2cc..25d09079 100644
--- a/src/include/meta-compositor.h
+++ b/src/include/meta-compositor.h
@@ -47,9 +47,6 @@ typedef enum
META_EFFECT_TYPE_UNMINIMIZE,
} MetaEffectType;
-MetaCompositor *meta_compositor_new (MetaCompositorType type,
- MetaDisplay *display);
-
void meta_compositor_add_window (MetaCompositor *compositor,
MetaWindow *window);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]