wayland: Refactor code setting up the display socket

So it may be reused when we need to open those again.

https://gitlab.gnome.org/GNOME/mutter/merge_requests/709
This commit is contained in:
Carlos Garnacho 2019-05-26 00:37:57 +02:00 committed by Carlos Garnacho
parent f5a2694eba
commit e8949292c1

View File

@ -397,6 +397,32 @@ meta_xwayland_override_display_number (int number)
display_number_override = number; display_number_override = number;
} }
static gboolean
open_display_sockets (MetaXWaylandManager *manager,
int display_index,
gboolean *fatal)
{
int abstract_fd, unix_fd;
abstract_fd = bind_to_abstract_socket (display_index,
fatal);
if (abstract_fd < 0)
return FALSE;
unix_fd = bind_to_unix_socket (display_index);
if (unix_fd < 0)
{
*fatal = FALSE;
close (abstract_fd);
return FALSE;
}
manager->abstract_fd = abstract_fd;
manager->unix_fd = unix_fd;
return TRUE;
}
static gboolean static gboolean
choose_xdisplay (MetaXWaylandManager *manager) choose_xdisplay (MetaXWaylandManager *manager)
{ {
@ -418,8 +444,7 @@ choose_xdisplay (MetaXWaylandManager *manager)
return FALSE; return FALSE;
} }
manager->abstract_fd = bind_to_abstract_socket (display, &fatal); if (!open_display_sockets (manager, display, &fatal))
if (manager->abstract_fd < 0)
{ {
unlink (lock_file); unlink (lock_file);
@ -430,20 +455,11 @@ choose_xdisplay (MetaXWaylandManager *manager)
} }
else else
{ {
g_warning ("Failed to bind abstract socket"); g_warning ("Failed to bind X11 socket");
return FALSE; return FALSE;
} }
} }
manager->unix_fd = bind_to_unix_socket (display);
if (manager->unix_fd < 0)
{
unlink (lock_file);
close (manager->abstract_fd);
display++;
continue;
}
break; break;
} }
while (1); while (1);