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
This commit is contained in:
parent
ef2e04a613
commit
850ef51879
@ -126,6 +126,7 @@ G_DEFINE_TYPE(MetaDisplay, meta_display, G_TYPE_OBJECT);
|
|||||||
enum
|
enum
|
||||||
{
|
{
|
||||||
CURSOR_UPDATED,
|
CURSOR_UPDATED,
|
||||||
|
X11_DISPLAY_SETUP,
|
||||||
X11_DISPLAY_OPENED,
|
X11_DISPLAY_OPENED,
|
||||||
X11_DISPLAY_CLOSING,
|
X11_DISPLAY_CLOSING,
|
||||||
OVERLAY_KEY,
|
OVERLAY_KEY,
|
||||||
@ -232,6 +233,14 @@ meta_display_class_init (MetaDisplayClass *klass)
|
|||||||
NULL, NULL, NULL,
|
NULL, NULL, NULL,
|
||||||
G_TYPE_NONE, 0);
|
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] =
|
display_signals[X11_DISPLAY_OPENED] =
|
||||||
g_signal_new ("x11-display-opened",
|
g_signal_new ("x11-display-opened",
|
||||||
G_TYPE_FROM_CLASS (klass),
|
G_TYPE_FROM_CLASS (klass),
|
||||||
@ -657,12 +666,13 @@ meta_display_init_x11 (MetaDisplay *display,
|
|||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
display->x11_display = x11_display;
|
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);
|
meta_x11_display_create_guard_window (x11_display);
|
||||||
|
|
||||||
if (!display->display_opening)
|
if (!display->display_opening)
|
||||||
{
|
{
|
||||||
|
g_signal_emit (display, display_signals[X11_DISPLAY_OPENED], 0);
|
||||||
meta_display_manage_all_xwindows (display);
|
meta_display_manage_all_xwindows (display);
|
||||||
meta_compositor_redirect_x11_windows (display->compositor);
|
meta_compositor_redirect_x11_windows (display->compositor);
|
||||||
}
|
}
|
||||||
@ -803,6 +813,7 @@ meta_display_open (void)
|
|||||||
|
|
||||||
if (display->x11_display)
|
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_restore_active_workspace (display->x11_display);
|
||||||
meta_x11_display_create_guard_window (display->x11_display);
|
meta_x11_display_create_guard_window (display->x11_display);
|
||||||
}
|
}
|
||||||
|
@ -556,7 +556,7 @@ meta_stack_tracker_new (MetaDisplay *display)
|
|||||||
tracker->unverified_predictions = g_queue_new ();
|
tracker->unverified_predictions = g_queue_new ();
|
||||||
|
|
||||||
g_signal_connect (display,
|
g_signal_connect (display,
|
||||||
"x11-display-opened",
|
"x11-display-setup",
|
||||||
G_CALLBACK (query_xserver_stack),
|
G_CALLBACK (query_xserver_stack),
|
||||||
tracker);
|
tracker);
|
||||||
g_signal_connect (display,
|
g_signal_connect (display,
|
||||||
|
Loading…
Reference in New Issue
Block a user