summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonas Ådahl <jadahl@gmail.com>2021-03-03 16:05:09 +0100
committerJonas Ådahl <jadahl@gmail.com>2021-07-15 11:34:37 +0200
commite8af5fd398985fa9d17b9ce523c394a15404dee7 (patch)
treef0b46002703ee194248fa9f51577878ca20a143b
parent4be9bc9db4b03941028162a0ee166a13e6dbd035 (diff)
downloadmutter-e8af5fd398985fa9d17b9ce523c394a15404dee7.tar.gz
display: Keep pointer to the context
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1861>
-rw-r--r--src/core/display-private.h3
-rw-r--r--src/core/display.c28
-rw-r--r--src/core/meta-context.c2
-rw-r--r--src/meta/display.h3
4 files changed, 32 insertions, 4 deletions
diff --git a/src/core/display-private.h b/src/core/display-private.h
index fc18d6861..8efac0b49 100644
--- a/src/core/display-private.h
+++ b/src/core/display-private.h
@@ -256,7 +256,8 @@ struct _MetaDisplayClass
(time2) != 0) \
)
-MetaDisplay * meta_display_new (GError **error);
+MetaDisplay * meta_display_new (MetaContext *context,
+ GError **error);
void meta_display_manage_all_xwindows (MetaDisplay *display);
void meta_display_unmanage_windows (MetaDisplay *display,
diff --git a/src/core/display.c b/src/core/display.c
index 96be2bb00..12dacc20d 100644
--- a/src/core/display.c
+++ b/src/core/display.c
@@ -122,7 +122,12 @@ typedef struct
guint ping_timeout_id;
} MetaPingData;
-G_DEFINE_TYPE(MetaDisplay, meta_display, G_TYPE_OBJECT);
+typedef struct _MetaDisplayPrivate
+{
+ MetaContext *context;
+} MetaDisplayPrivate;
+
+G_DEFINE_TYPE_WITH_PRIVATE (MetaDisplay, meta_display, G_TYPE_OBJECT)
/* Signals */
enum
@@ -789,9 +794,11 @@ meta_display_shutdown_x11 (MetaDisplay *display)
}
MetaDisplay *
-meta_display_new (GError **error)
+meta_display_new (MetaContext *context,
+ GError **error)
{
MetaDisplay *display;
+ MetaDisplayPrivate *priv;
int i;
guint32 timestamp;
Window old_active_xwindow = None;
@@ -802,6 +809,9 @@ meta_display_new (GError **error)
g_assert (the_display == NULL);
display = the_display = g_object_new (META_TYPE_DISPLAY, NULL);
+ priv = meta_display_get_instance_private (display);
+ priv->context = context;
+
display->closing = 0;
display->display_opening = TRUE;
@@ -2773,6 +2783,20 @@ meta_display_supports_extended_barriers (MetaDisplay *display)
}
/**
+ * meta_display_get_context:
+ * @display: a #MetaDisplay
+ *
+ * Returns: (transfer none): the #MetaContext
+ */
+MetaContext *
+meta_display_get_context (MetaDisplay *display)
+{
+ MetaDisplayPrivate *priv = meta_display_get_instance_private (display);
+
+ return priv->context;
+}
+
+/**
* meta_display_get_compositor: (skip)
* @display: a #MetaDisplay
*
diff --git a/src/core/meta-context.c b/src/core/meta-context.c
index 35bb042be..4d299bdaf 100644
--- a/src/core/meta-context.c
+++ b/src/core/meta-context.c
@@ -321,7 +321,7 @@ meta_context_start (MetaContext *context,
meta_backend_init_wayland (meta_get_backend ());
#endif
- priv->display = meta_display_new (error);
+ priv->display = meta_display_new (context, error);
if (!priv->display)
return FALSE;
diff --git a/src/meta/display.h b/src/meta/display.h
index cddd8c656..23bcbd0f5 100644
--- a/src/meta/display.h
+++ b/src/meta/display.h
@@ -85,6 +85,9 @@ void meta_display_close (MetaDisplay *display,
guint32 timestamp);
META_EXPORT
+MetaContext * meta_display_get_context (MetaDisplay *display);
+
+META_EXPORT
MetaCompositor *meta_display_get_compositor (MetaDisplay *display);
META_EXPORT