[mutter/wip/carlosg/x11-services-initialization-fix] core: Split x11-display initialization in 2 signals
- From: Carlos Garnacho <carlosg src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [mutter/wip/carlosg/x11-services-initialization-fix] core: Split x11-display initialization in 2 signals
- Date: Wed, 11 Sep 2019 20:31:29 +0000 (UTC)
commit 850ef518795dcc20d3b9a4f661f70ff8d0ddacb2
Author: Carlos Garnacho <carlosg gnome org>
Date: Wed Sep 11 22:26:49 2019 +0200
core: Split x11-display initialization in 2 signals
We have a "setup" phase, used internally to initialize early the x11
side of things like the stack tracker, and an "opened" phase where
other upper parts may hook up to. This latter phase is delayed during
initialization so the upper parts have a change to connect to on
plugin creation.
Closes: https://gitlab.gnome.org/GNOME/mutter/issues/771
src/core/display.c | 13 ++++++++++++-
src/core/stack-tracker.c | 2 +-
2 files changed, 13 insertions(+), 2 deletions(-)
---
diff --git a/src/core/display.c b/src/core/display.c
index e803f5557..2ddcbbc1f 100644
--- a/src/core/display.c
+++ b/src/core/display.c
@@ -126,6 +126,7 @@ G_DEFINE_TYPE(MetaDisplay, meta_display, G_TYPE_OBJECT);
enum
{
CURSOR_UPDATED,
+ X11_DISPLAY_SETUP,
X11_DISPLAY_OPENED,
X11_DISPLAY_CLOSING,
OVERLAY_KEY,
@@ -232,6 +233,14 @@ meta_display_class_init (MetaDisplayClass *klass)
NULL, NULL, NULL,
G_TYPE_NONE, 0);
+ display_signals[X11_DISPLAY_SETUP] =
+ g_signal_new ("x11-display-setup",
+ G_TYPE_FROM_CLASS (klass),
+ G_SIGNAL_RUN_LAST,
+ 0,
+ NULL, NULL, NULL,
+ G_TYPE_NONE, 0);
+
display_signals[X11_DISPLAY_OPENED] =
g_signal_new ("x11-display-opened",
G_TYPE_FROM_CLASS (klass),
@@ -657,12 +666,13 @@ meta_display_init_x11 (MetaDisplay *display,
return FALSE;
display->x11_display = x11_display;
- g_signal_emit (display, display_signals[X11_DISPLAY_OPENED], 0);
+ g_signal_emit (display, display_signals[X11_DISPLAY_SETUP], 0);
meta_x11_display_create_guard_window (x11_display);
if (!display->display_opening)
{
+ g_signal_emit (display, display_signals[X11_DISPLAY_OPENED], 0);
meta_display_manage_all_xwindows (display);
meta_compositor_redirect_x11_windows (display->compositor);
}
@@ -803,6 +813,7 @@ meta_display_open (void)
if (display->x11_display)
{
+ g_signal_emit (display, display_signals[X11_DISPLAY_OPENED], 0);
meta_x11_display_restore_active_workspace (display->x11_display);
meta_x11_display_create_guard_window (display->x11_display);
}
diff --git a/src/core/stack-tracker.c b/src/core/stack-tracker.c
index 5a2956c00..a37760ec2 100644
--- a/src/core/stack-tracker.c
+++ b/src/core/stack-tracker.c
@@ -556,7 +556,7 @@ meta_stack_tracker_new (MetaDisplay *display)
tracker->unverified_predictions = g_queue_new ();
g_signal_connect (display,
- "x11-display-opened",
+ "x11-display-setup",
G_CALLBACK (query_xserver_stack),
tracker);
g_signal_connect (display,
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]