[mutter] xwayland: Do not retry the same display
- From: Marge Bot <marge-bot src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [mutter] xwayland: Do not retry the same display
- Date: Thu, 21 Jan 2021 17:45:29 +0000 (UTC)
commit 26cc51a1a5345e42cd36dcf3668d5592dcc85f30
Author: Olivier Fourdan <ofourdan redhat com>
Date: Thu Jan 21 18:02:21 2021 +0100
xwayland: Do not retry the same display
Mutter listens to two display connections, one for regular X11 clients
and another one for the so called "managed services".
Once an available display number is found for the regular X11 clients,
mutter would then redo the work to find another available display number
for the managed services.
Yet, it does so starting from the same initial display, which is a waste
of time since it just tried all displays to find the first available
one, so all these, including the regular display it just took, are now
in use.
So instead of starting over from the beginning when looking for a
display available for the managed services, continue from the next
display immediately after the one we found precedently.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1680>
src/wayland/meta-xwayland.c | 28 ++++++++++++++++------------
1 file changed, 16 insertions(+), 12 deletions(-)
---
diff --git a/src/wayland/meta-xwayland.c b/src/wayland/meta-xwayland.c
index 9d2e608aa3..8c2ec1e75d 100644
--- a/src/wayland/meta-xwayland.c
+++ b/src/wayland/meta-xwayland.c
@@ -664,17 +664,12 @@ open_display_sockets (MetaXWaylandManager *manager,
static gboolean
choose_xdisplay (MetaXWaylandManager *manager,
MetaXWaylandConnection *connection,
+ int *display,
GError **error)
{
- int display = 0;
int number_of_tries = 0;
char *lock_file = NULL;
- if (display_number_override != -1)
- display = display_number_override;
- else if (g_getenv ("RUNNING_UNDER_GDM"))
- display = 1024;
-
if (!ensure_x11_unix_dir (error))
return FALSE;
@@ -682,7 +677,7 @@ choose_xdisplay (MetaXWaylandManager *manager,
{
g_autoptr (GError) local_error = NULL;
- lock_file = create_lock_file (display, &display, &local_error);
+ lock_file = create_lock_file (*display, display, &local_error);
if (!lock_file)
{
g_prefix_error (&local_error, "Failed to create an X lock file: ");
@@ -690,7 +685,7 @@ choose_xdisplay (MetaXWaylandManager *manager,
return FALSE;
}
- if (!open_display_sockets (manager, display,
+ if (!open_display_sockets (manager, *display,
&connection->abstract_fd,
&connection->unix_fd,
&local_error))
@@ -704,7 +699,7 @@ choose_xdisplay (MetaXWaylandManager *manager,
return FALSE;
}
- display++;
+ (*display)++;
continue;
}
@@ -712,7 +707,7 @@ choose_xdisplay (MetaXWaylandManager *manager,
}
while (1);
- connection->display_index = display;
+ connection->display_index = *display;
connection->name = g_strdup_printf (":%d", connection->display_index);
connection->lock_file = lock_file;
@@ -1055,12 +1050,21 @@ meta_xwayland_init (MetaXWaylandManager *manager,
GError **error)
{
MetaDisplayPolicy policy;
+ int display = 0;
+
+ if (display_number_override != -1)
+ display = display_number_override;
+ else if (g_getenv ("RUNNING_UNDER_GDM"))
+ display = 1024;
+
if (!manager->public_connection.name)
{
- if (!choose_xdisplay (manager, &manager->public_connection, error))
+ if (!choose_xdisplay (manager, &manager->public_connection, &display, error))
return FALSE;
- if (!choose_xdisplay (manager, &manager->private_connection, error))
+
+ display++;
+ if (!choose_xdisplay (manager, &manager->private_connection, &display, error))
return FALSE;
if (!prepare_auth_file (manager, error))
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]