backend: Move constructed to initable_init and init_basic

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4018>
This commit is contained in:
Sebastian Wick 2024-10-03 17:10:35 +02:00
parent d289ef9434
commit ad4f0b74d5
3 changed files with 64 additions and 69 deletions

View File

@ -761,45 +761,6 @@ upower_vanished (GDBusConnection *connection,
g_clear_object (&priv->upower_proxy);
}
static void
meta_backend_constructed (GObject *object)
{
MetaBackend *backend = META_BACKEND (object);
MetaBackendPrivate *priv = meta_backend_get_instance_private (backend);
MetaBackendClass *backend_class =
META_BACKEND_GET_CLASS (backend);
g_assert (priv->context);
priv->settings = meta_settings_new (backend);
#ifdef HAVE_LIBWACOM
priv->wacom_db = libwacom_database_new ();
if (!priv->wacom_db)
{
g_warning ("Could not create database of Wacom devices, "
"expect tablets to misbehave");
}
#endif
if (backend_class->is_lid_closed == meta_backend_real_is_lid_closed)
{
priv->upower_watch_id = g_bus_watch_name (G_BUS_TYPE_SYSTEM,
"org.freedesktop.UPower",
G_BUS_NAME_WATCHER_FLAGS_NONE,
upower_appeared,
upower_vanished,
backend,
NULL);
}
#ifdef HAVE_EGL
priv->egl = g_object_new (META_TYPE_EGL, NULL);
#endif
G_OBJECT_CLASS (meta_backend_parent_class)->constructed (object);
}
static void
meta_backend_set_property (GObject *object,
guint prop_id,
@ -849,7 +810,6 @@ meta_backend_class_init (MetaBackendClass *klass)
GObjectClass *object_class = G_OBJECT_CLASS (klass);
object_class->dispose = meta_backend_dispose;
object_class->constructed = meta_backend_constructed;
object_class->set_property = meta_backend_set_property;
object_class->get_property = meta_backend_get_property;
@ -1181,6 +1141,35 @@ meta_backend_initable_init (GInitable *initable,
priv->in_init = TRUE;
g_assert (priv->context);
priv->settings = meta_settings_new (backend);
#ifdef HAVE_LIBWACOM
priv->wacom_db = libwacom_database_new ();
if (!priv->wacom_db)
{
g_warning ("Could not create database of Wacom devices, "
"expect tablets to misbehave");
}
#endif
if (META_BACKEND_GET_CLASS (backend)->is_lid_closed ==
meta_backend_real_is_lid_closed)
{
priv->upower_watch_id = g_bus_watch_name (G_BUS_TYPE_SYSTEM,
"org.freedesktop.UPower",
G_BUS_NAME_WATCHER_FLAGS_NONE,
upower_appeared,
upower_vanished,
backend,
NULL);
}
#ifdef HAVE_EGL
priv->egl = g_object_new (META_TYPE_EGL, NULL);
#endif
if (META_BACKEND_GET_CLASS (backend)->init_basic &&
!META_BACKEND_GET_CLASS (backend)->init_basic (backend, error))
return FALSE;

View File

@ -97,6 +97,29 @@ on_device_added (ClutterSeat *seat,
apply_keymap (x11);
}
static gboolean
meta_backend_x11_cm_init_basic (MetaBackend *backend,
GError **error)
{
MetaBackendClass *parent_backend_class =
META_BACKEND_CLASS (meta_backend_x11_cm_parent_class);
MetaBackendX11Cm *x11_cm = META_BACKEND_X11_CM (backend);
MetaGpuXrandr *gpu_xrandr;
if (x11_cm->display_name)
g_setenv ("DISPLAY", x11_cm->display_name, TRUE);
/*
* The X server deals with multiple GPUs for us, so we just see what the X
* server gives us as one single GPU, even though it may actually be backed
* by multiple.
*/
gpu_xrandr = meta_gpu_xrandr_new (META_BACKEND_X11 (x11_cm));
meta_backend_add_gpu (backend, META_GPU (gpu_xrandr));
return parent_backend_class->init_basic (backend, error);
}
static gboolean
meta_backend_x11_cm_init_render (MetaBackend *backend,
GError **error)
@ -508,30 +531,9 @@ meta_backend_x11_cm_finalize (GObject *object)
G_OBJECT_CLASS (meta_backend_x11_cm_parent_class)->finalize (object);
}
static void
meta_backend_x11_cm_constructed (GObject *object)
{
MetaBackendX11Cm *x11_cm = META_BACKEND_X11_CM (object);
if (x11_cm->display_name)
g_setenv ("DISPLAY", x11_cm->display_name, TRUE);
G_OBJECT_CLASS (meta_backend_x11_cm_parent_class)->constructed (object);
}
static void
meta_backend_x11_cm_init (MetaBackendX11Cm *backend_x11_cm)
{
MetaGpuXrandr *gpu_xrandr;
/*
* The X server deals with multiple GPUs for us, so we just see what the X
* server gives us as one single GPU, even though it may actually be backed
* by multiple.
*/
gpu_xrandr = meta_gpu_xrandr_new (META_BACKEND_X11 (backend_x11_cm));
meta_backend_add_gpu (META_BACKEND (backend_x11_cm),
META_GPU (gpu_xrandr));
}
static void
@ -543,8 +545,8 @@ meta_backend_x11_cm_class_init (MetaBackendX11CmClass *klass)
object_class->set_property = meta_backend_x11_cm_set_property;
object_class->finalize = meta_backend_x11_cm_finalize;
object_class->constructed = meta_backend_x11_cm_constructed;
backend_class->init_basic = meta_backend_x11_cm_init_basic;
backend_class->init_render = meta_backend_x11_cm_init_render;
backend_class->get_capabilities = meta_backend_x11_cm_get_capabilities;
backend_class->create_renderer = meta_backend_x11_cm_create_renderer;

View File

@ -247,16 +247,20 @@ meta_backend_x11_nested_get_capabilities (MetaBackend *backend)
return META_BACKEND_CAPABILITY_NONE;
}
static void
meta_backend_x11_nested_constructed (GObject *object)
static gboolean
meta_backend_x11_nested_init_basic (MetaBackend *backend,
GError **error)
{
MetaBackendX11Nested *backend_x11_nested = META_BACKEND_X11_NESTED (object);
GObjectClass *parent_class =
G_OBJECT_CLASS (meta_backend_x11_nested_parent_class);
MetaBackendX11Nested *backend_x11_nested = META_BACKEND_X11_NESTED (backend);
MetaBackendClass *parent_backend_class =
META_BACKEND_CLASS (meta_backend_x11_nested_parent_class);
parent_class->constructed (object);
if (!parent_backend_class->init_basic (backend, error))
return FALSE;
init_gpus (backend_x11_nested);
return TRUE;
}
static void
@ -284,9 +288,9 @@ meta_backend_x11_nested_class_init (MetaBackendX11NestedClass *klass)
MetaBackendClass *backend_class = META_BACKEND_CLASS (klass);
MetaBackendX11Class *backend_x11_class = META_BACKEND_X11_CLASS (klass);
object_class->constructed = meta_backend_x11_nested_constructed;
object_class->dispose = meta_backend_x11_nested_dispose;
backend_class->init_basic = meta_backend_x11_nested_init_basic;
backend_class->get_capabilities = meta_backend_x11_nested_get_capabilities;
backend_class->create_renderer = meta_backend_x11_nested_create_renderer;
backend_class->create_monitor_manager = meta_backend_x11_nested_create_monitor_manager;