|
|
9e4c4a7 |
From e20ebeefa42997fe65008b11ef771c71b697273c Mon Sep 17 00:00:00 2001
|
|
|
9e4c4a7 |
From: Adam Williamson <awilliam@redhat.com>
|
|
|
9e4c4a7 |
Date: Fri, 20 Oct 2023 22:12:23 -0700
|
|
|
9e4c4a7 |
Subject: [PATCH] modified 3329
|
|
|
34559e0 |
|
|
|
9e4c4a7 |
Signed-off-by: Adam Williamson <awilliam@redhat.com>
|
|
|
34559e0 |
---
|
|
|
9e4c4a7 |
src/compositor/meta-compositor-x11.c | 2 ++
|
|
|
9e4c4a7 |
src/core/display.c | 34 ----------------------------
|
|
|
9e4c4a7 |
src/tests/x11-test.sh | 3 +++
|
|
|
9e4c4a7 |
src/x11/meta-x11-display.c | 30 +++++++++++++++++++++++-
|
|
|
9e4c4a7 |
4 files changed, 34 insertions(+), 35 deletions(-)
|
|
|
34559e0 |
|
|
|
34559e0 |
diff --git a/src/compositor/meta-compositor-x11.c b/src/compositor/meta-compositor-x11.c
|
|
|
9e4c4a7 |
index 1ad3327dd..ce7bc1945 100644
|
|
|
34559e0 |
--- a/src/compositor/meta-compositor-x11.c
|
|
|
34559e0 |
+++ b/src/compositor/meta-compositor-x11.c
|
|
|
34559e0 |
@@ -188,6 +188,8 @@ meta_compositor_x11_manage (MetaCompositor *compositor,
|
|
|
34559e0 |
|
|
|
34559e0 |
compositor_x11->have_x11_sync_object = meta_sync_ring_init (xdisplay);
|
|
|
34559e0 |
|
|
|
34559e0 |
+ meta_x11_display_redirect_windows (x11_display, display);
|
|
|
34559e0 |
+
|
|
|
34559e0 |
return TRUE;
|
|
|
34559e0 |
}
|
|
|
34559e0 |
|
|
|
34559e0 |
diff --git a/src/core/display.c b/src/core/display.c
|
|
|
9e4c4a7 |
index 0a191c0fb..b16e50e21 100644
|
|
|
34559e0 |
--- a/src/core/display.c
|
|
|
34559e0 |
+++ b/src/core/display.c
|
|
|
34559e0 |
@@ -930,9 +930,6 @@ meta_display_new (MetaContext *context,
|
|
|
34559e0 |
MetaDisplay *display;
|
|
|
34559e0 |
MetaDisplayPrivate *priv;
|
|
|
34559e0 |
guint32 timestamp;
|
|
|
34559e0 |
-#ifdef HAVE_X11_CLIENT
|
|
|
34559e0 |
- Window old_active_xwindow = None;
|
|
|
34559e0 |
-#endif
|
|
|
34559e0 |
MetaMonitorManager *monitor_manager;
|
|
|
34559e0 |
MetaSettings *settings;
|
|
|
34559e0 |
MetaInputCapture *input_capture;
|
|
|
34559e0 |
@@ -1048,14 +1045,6 @@ meta_display_new (MetaContext *context,
|
|
|
34559e0 |
display->last_focus_time = timestamp;
|
|
|
34559e0 |
display->last_user_time = timestamp;
|
|
|
34559e0 |
|
|
|
34559e0 |
-#ifdef HAVE_X11
|
|
|
34559e0 |
- if (!meta_is_wayland_compositor ())
|
|
|
34559e0 |
- meta_prop_get_window (display->x11_display,
|
|
|
34559e0 |
- display->x11_display->xroot,
|
|
|
34559e0 |
- display->x11_display->atom__NET_ACTIVE_WINDOW,
|
|
|
34559e0 |
- &old_active_xwindow);
|
|
|
34559e0 |
-#endif
|
|
|
34559e0 |
-
|
|
|
34559e0 |
if (!meta_compositor_manage (display->compositor, error))
|
|
|
34559e0 |
{
|
|
|
34559e0 |
g_object_unref (display);
|
|
|
34559e0 |
@@ -1076,30 +1065,7 @@ meta_display_new (MetaContext *context,
|
|
|
34559e0 |
g_signal_connect (display->gesture_tracker, "state-changed",
|
|
|
34559e0 |
G_CALLBACK (gesture_tracker_state_changed), display);
|
|
|
34559e0 |
|
|
|
34559e0 |
- /* We know that if mutter is running as a Wayland compositor,
|
|
|
34559e0 |
- * we start out with no windows.
|
|
|
34559e0 |
- */
|
|
|
34559e0 |
-#ifdef HAVE_X11_CLIENT
|
|
|
34559e0 |
- if (!meta_is_wayland_compositor ())
|
|
|
34559e0 |
- meta_display_manage_all_xwindows (display);
|
|
|
34559e0 |
-
|
|
|
34559e0 |
- if (old_active_xwindow != None)
|
|
|
34559e0 |
- {
|
|
|
34559e0 |
- MetaWindow *old_active_window;
|
|
|
34559e0 |
- old_active_window = meta_x11_display_lookup_x_window (display->x11_display,
|
|
|
34559e0 |
- old_active_xwindow);
|
|
|
34559e0 |
- if (old_active_window)
|
|
|
34559e0 |
- meta_window_focus (old_active_window, timestamp);
|
|
|
34559e0 |
- else
|
|
|
34559e0 |
- meta_display_unset_input_focus (display, timestamp);
|
|
|
34559e0 |
- }
|
|
|
34559e0 |
- else
|
|
|
34559e0 |
- {
|
|
|
34559e0 |
- meta_display_unset_input_focus (display, timestamp);
|
|
|
34559e0 |
- }
|
|
|
34559e0 |
-#else
|
|
|
34559e0 |
meta_display_unset_input_focus (display, timestamp);
|
|
|
34559e0 |
-#endif
|
|
|
34559e0 |
|
|
|
34559e0 |
g_signal_connect (stage, "notify::is-grabbed",
|
|
|
34559e0 |
G_CALLBACK (on_is_grabbed_changed), display);
|
|
|
9e4c4a7 |
diff --git a/src/tests/x11-test.sh b/src/tests/x11-test.sh
|
|
|
9e4c4a7 |
index 59e460fc3..d95b2460f 100755
|
|
|
9e4c4a7 |
--- a/src/tests/x11-test.sh
|
|
|
9e4c4a7 |
+++ b/src/tests/x11-test.sh
|
|
|
9e4c4a7 |
@@ -34,6 +34,9 @@ echo \# Launched with pid $MUTTER2_PID
|
|
|
9e4c4a7 |
MUTTER2_PID=$!
|
|
|
9e4c4a7 |
wait $MUTTER1_PID
|
|
|
9e4c4a7 |
|
|
|
9e4c4a7 |
+echo \# Waiting for the second mutter to finish loading
|
|
|
9e4c4a7 |
+gdbus wait --session org.gnome.Mutter.IdleMonitor
|
|
|
9e4c4a7 |
+
|
|
|
9e4c4a7 |
sleep 2
|
|
|
9e4c4a7 |
|
|
|
9e4c4a7 |
echo \# Terminating clients > /dev/stderr
|
|
|
34559e0 |
diff --git a/src/x11/meta-x11-display.c b/src/x11/meta-x11-display.c
|
|
|
9e4c4a7 |
index 4e98203dd..4ca620410 100644
|
|
|
34559e0 |
--- a/src/x11/meta-x11-display.c
|
|
|
34559e0 |
+++ b/src/x11/meta-x11-display.c
|
|
|
9e4c4a7 |
@@ -300,8 +300,36 @@ static void
|
|
|
34559e0 |
on_x11_display_opened (MetaX11Display *x11_display,
|
|
|
34559e0 |
MetaDisplay *display)
|
|
|
34559e0 |
{
|
|
|
34559e0 |
+ Window old_active_xwindow = None;
|
|
|
34559e0 |
+
|
|
|
34559e0 |
+ if (!meta_is_wayland_compositor ())
|
|
|
34559e0 |
+ {
|
|
|
34559e0 |
+ meta_prop_get_window (display->x11_display,
|
|
|
34559e0 |
+ display->x11_display->xroot,
|
|
|
34559e0 |
+ display->x11_display->atom__NET_ACTIVE_WINDOW,
|
|
|
34559e0 |
+ &old_active_xwindow);
|
|
|
34559e0 |
+ }
|
|
|
34559e0 |
+
|
|
|
9e4c4a7 |
+ if (meta_is_wayland_compositor ())
|
|
|
9e4c4a7 |
+ meta_x11_display_redirect_windows (x11_display, display);
|
|
|
9e4c4a7 |
+
|
|
|
9e4c4a7 |
+
|
|
|
34559e0 |
meta_display_manage_all_xwindows (display);
|
|
|
9e4c4a7 |
- meta_x11_display_redirect_windows (x11_display, display);
|
|
|
34559e0 |
+
|
|
|
34559e0 |
+ if (old_active_xwindow != None)
|
|
|
34559e0 |
+ {
|
|
|
34559e0 |
+ MetaWindow *old_active_window;
|
|
|
34559e0 |
+
|
|
|
34559e0 |
+ old_active_window = meta_x11_display_lookup_x_window (x11_display,
|
|
|
34559e0 |
+ old_active_xwindow);
|
|
|
34559e0 |
+ if (old_active_window)
|
|
|
34559e0 |
+ {
|
|
|
34559e0 |
+ uint32_t timestamp;
|
|
|
34559e0 |
+
|
|
|
34559e0 |
+ timestamp = display->x11_display->timestamp;
|
|
|
34559e0 |
+ meta_window_focus (old_active_window, timestamp);
|
|
|
34559e0 |
+ }
|
|
|
34559e0 |
+ }
|
|
|
34559e0 |
}
|
|
|
34559e0 |
|
|
|
34559e0 |
static void
|
|
|
34559e0 |
--
|
|
|
9e4c4a7 |
2.41.0
|
|
|
34559e0 |
|