diff options
Diffstat (limited to 'x11/gdm/files/patch-daemon_gdm-local-display-factory.c')
-rw-r--r-- | x11/gdm/files/patch-daemon_gdm-local-display-factory.c | 124 |
1 files changed, 56 insertions, 68 deletions
diff --git a/x11/gdm/files/patch-daemon_gdm-local-display-factory.c b/x11/gdm/files/patch-daemon_gdm-local-display-factory.c index 5219f30fc618..07f024001656 100644 --- a/x11/gdm/files/patch-daemon_gdm-local-display-factory.c +++ b/x11/gdm/files/patch-daemon_gdm-local-display-factory.c @@ -1,20 +1,22 @@ ---- daemon/gdm-local-display-factory.c.orig 2022-03-21 18:12:40 UTC +--- daemon/gdm-local-display-factory.c.orig 2024-09-16 13:28:26 UTC +++ daemon/gdm-local-display-factory.c -@@ -29,10 +29,12 @@ +@@ -28,11 +28,15 @@ + #include <glib-object.h> #include <gio/gio.h> ++#ifdef WITH_SYSTEMD #ifdef HAVE_UDEV --#include <gudev/gudev.h> -+#undef HAVE_UDEV + #include <gudev/gudev.h> #endif -+#ifdef WITH_SYSTEMD #include <systemd/sd-login.h> ++#elif defined(WITH_CONSOLE_KIT) ++#include <ConsoleKit/sd-login.h> +#endif #include "gdm-common.h" #include "gdm-manager.h" -@@ -68,8 +70,10 @@ struct _GdmLocalDisplayFactory +@@ -68,8 +72,10 @@ struct _GdmLocalDisplayFactory /* FIXME: this needs to be per seat? */ guint num_failures; @@ -23,9 +25,9 @@ guint seat_removed_id; +#endif guint seat_properties_changed_id; + guint seat_attention_key; - gboolean seat0_has_platform_graphics; -@@ -106,9 +110,11 @@ static gpointer local_display_factory_object = NULL; +@@ -108,9 +114,11 @@ static gpointer local_display_factory_object = NULL; static gboolean gdm_local_display_factory_sync_seats (GdmLocalDisplayFactory *factory); static gpointer local_display_factory_object = NULL; @@ -37,27 +39,7 @@ G_DEFINE_TYPE (GdmLocalDisplayFactory, gdm_local_display_factory, GDM_TYPE_DISPLAY_FACTORY) -@@ -245,9 +251,9 @@ struct GdmDisplayServerConfiguration { - const char *session_type; - } display_server_configuration[] = { - #ifdef ENABLE_WAYLAND_SUPPORT -- { "wayland", GDM_KEY_WAYLAND_ENABLE, "/usr/bin/Xwayland", "wayland" }, -+ { "wayland", GDM_KEY_WAYLAND_ENABLE, "/usr/local/bin/Xwayland", "wayland" }, - #endif -- { "xorg", GDM_KEY_XORG_ENABLE, "/usr/bin/Xorg", "x11" }, -+ { "xorg", GDM_KEY_XORG_ENABLE, X_SERVER, "x11" }, - { NULL, NULL, NULL }, - }; - -@@ -373,7 +379,6 @@ gdm_local_display_factory_create_transient_display (Gd - gboolean ret; - GdmDisplay *display = NULL; - gboolean is_initial = FALSE; -- const char *session_type; - g_autofree gchar *preferred_display_server = NULL; - - g_return_val_if_fail (GDM_IS_LOCAL_DISPLAY_FACTORY (factory), FALSE); -@@ -451,6 +456,7 @@ gdm_local_display_factory_create_transient_display (Gd +@@ -474,6 +482,7 @@ gdm_local_display_factory_create_transient_display (Gd return ret; } @@ -65,7 +47,7 @@ static void finish_display_on_seat_if_waiting (GdmDisplayStore *display_store, GdmDisplay *display, -@@ -505,6 +511,7 @@ on_session_registered_cb (GObject *gobject, +@@ -528,6 +537,7 @@ on_session_registered_cb (GObject *gobject, finish_waiting_displays_on_seat (factory, "seat0"); } @@ -73,51 +55,58 @@ static void on_display_status_changed (GdmDisplay *display, -@@ -552,7 +559,7 @@ on_display_status_changed (GdmDisplay *dis - * if there isn't one. +@@ -560,7 +570,9 @@ on_display_status_changed (GdmDisplay *dis + "session-id", &session_id, + NULL); + ++#ifdef WITH_SYSTEMD + sd_seat_get_active (seat_id, &seat_active_session, NULL); ++#endif + + status = gdm_display_get_status (display); + +@@ -578,12 +590,16 @@ on_display_status_changed (GdmDisplay *dis + * screen when the user logs out. */ if (is_local && -- (g_strcmp0 (session_class, "greeter") != 0 || factory->active_vt == GDM_INITIAL_VT)) { ++#ifdef WITH_SYSTEMD + ((g_strcmp0 (session_class, "greeter") != 0 && + (!seat_active_session || g_strcmp0(session_id, seat_active_session) == 0)) || + #if defined(ENABLE_USER_DISPLAY_SERVER) + (g_strcmp0 (seat_id, "seat0") == 0 && factory->active_vt == GDM_INITIAL_VT) || + #endif + g_strcmp0 (seat_id, "seat0") != 0)) { ++#else + (g_strcmp0 (session_class, "greeter") != 0)) { ++#endif /* reset num failures */ factory->num_failures = 0; -@@ -741,7 +748,9 @@ ensure_display_for_seat (GdmLocalDisplayFactory *facto +@@ -818,12 +834,15 @@ ensure_display_for_seat (GdmLocalDisplayFactory *facto + g_auto (GStrv) session_types = NULL; const char *legacy_session_types[] = { "x11", NULL }; - GdmDisplayStore *store; GdmDisplay *display = NULL; +#ifdef WITH_SYSTEMD g_autofree char *login_session_id = NULL; +#endif - gboolean wayland_enabled = FALSE, xorg_enabled = FALSE; g_autofree gchar *preferred_display_server = NULL; - gboolean falling_back = FALSE; -@@ -781,7 +790,7 @@ ensure_display_for_seat (GdmLocalDisplayFactory *facto - seat_supports_graphics = FALSE; - } + gboolean waiting_on_udev = FALSE; -- if (g_strcmp0 (seat_id, "seat0") == 0) { -+ if (g_strcmp0 (seat_id, SEAT_ID) == 0) { - is_seat0 = TRUE; - - falling_back = factory->num_failures > 0; -@@ -869,6 +878,7 @@ ensure_display_for_seat (GdmLocalDisplayFactory *facto - return; - } + g_debug ("GdmLocalDisplayFactory: display for seat %s requested", seat_id); +#ifdef WITH_SYSTEMD /* If we already have a login window, switch to it */ if (gdm_get_login_window_session_id (seat_id, &login_session_id)) { GdmDisplay *display; -@@ -886,6 +896,7 @@ ensure_display_for_seat (GdmLocalDisplayFactory *facto +@@ -843,6 +862,7 @@ ensure_display_for_seat (GdmLocalDisplayFactory *facto return; } } +#endif - g_debug ("GdmLocalDisplayFactory: Adding display on seat %s", seat_id); + preferred_display_server = get_preferred_display_server (factory); -@@ -929,6 +940,7 @@ ensure_display_for_seat (GdmLocalDisplayFactory *facto +@@ -993,6 +1013,7 @@ ensure_display_for_seat (GdmLocalDisplayFactory *facto return; } @@ -125,7 +114,7 @@ static void delete_display (GdmLocalDisplayFactory *factory, const char *seat_id) { -@@ -940,6 +952,7 @@ delete_display (GdmLocalDisplayFactory *factory, +@@ -1004,6 +1025,7 @@ delete_display (GdmLocalDisplayFactory *factory, store = gdm_display_factory_get_display_store (GDM_DISPLAY_FACTORY (factory)); gdm_display_store_foreach_remove (store, lookup_by_seat_id, (gpointer) seat_id); } @@ -133,16 +122,15 @@ static gboolean gdm_local_display_factory_sync_seats (GdmLocalDisplayFactory *factory) -@@ -951,6 +964,8 @@ gdm_local_display_factory_sync_seats (GdmLocalDisplayF +@@ -1015,6 +1037,7 @@ gdm_local_display_factory_sync_seats (GdmLocalDisplayF const char *seat; g_debug ("GdmLocalDisplayFactory: enumerating seats from logind"); -+ +#ifdef WITH_SYSTEMD result = g_dbus_connection_call_sync (factory->connection, "org.freedesktop.login1", "/org/freedesktop/login1", -@@ -961,6 +976,18 @@ gdm_local_display_factory_sync_seats (GdmLocalDisplayF +@@ -1025,6 +1048,18 @@ gdm_local_display_factory_sync_seats (GdmLocalDisplayF G_DBUS_CALL_FLAGS_NONE, -1, NULL, &error); @@ -161,15 +149,15 @@ if (!result) { g_warning ("GdmLocalDisplayFactory: Failed to issue method call: %s", error->message); -@@ -980,6 +1007,7 @@ gdm_local_display_factory_sync_seats (GdmLocalDisplayF +@@ -1044,6 +1079,7 @@ gdm_local_display_factory_sync_seats (GdmLocalDisplayF return TRUE; } +#ifdef WITH_SYSTEMD static void - on_seat_new (GDBusConnection *connection, - const gchar *sender_name, -@@ -1093,6 +1121,7 @@ lookup_by_tty (const char *id, + on_seat_activate_greeter (GDBusConnection *connection, + const gchar *sender_name, +@@ -1177,6 +1213,7 @@ lookup_by_tty (const char *id, return g_strcmp0 (tty_to_check, tty_to_find) == 0; } @@ -177,15 +165,15 @@ #if defined(ENABLE_USER_DISPLAY_SERVER) static void -@@ -1295,6 +1324,7 @@ on_uevent (GUdevClient *client, +@@ -1354,6 +1391,7 @@ on_vt_changed (GIOChannel *source, } #endif +#ifdef WITH_SYSTEMD + #ifdef HAVE_UDEV static void - gdm_local_display_factory_start_monitor (GdmLocalDisplayFactory *factory) - { -@@ -1352,10 +1382,12 @@ gdm_local_display_factory_start_monitor (GdmLocalDispl + on_uevent (GUdevClient *client, +@@ -1444,10 +1482,12 @@ gdm_local_display_factory_start_monitor (GdmLocalDispl } #endif } @@ -194,19 +182,19 @@ static void gdm_local_display_factory_stop_monitor (GdmLocalDisplayFactory *factory) { -+#ifdef HAVE_UDEV ++#ifdef WITH_SYSTEMD if (factory->uevent_handler_id) { g_signal_handler_disconnect (factory->gudev_client, factory->uevent_handler_id); factory->uevent_handler_id = 0; -@@ -1387,6 +1419,7 @@ gdm_local_display_factory_stop_monitor (GdmLocalDispla - factory->wait_to_finish_timeout_id = 0; - } +@@ -1478,6 +1518,7 @@ gdm_local_display_factory_stop_monitor (GdmLocalDispla + g_clear_handle_id (&factory->active_vt_watch_id, g_source_remove); + g_clear_handle_id (&factory->wait_to_finish_timeout_id, g_source_remove); #endif +#endif } static void -@@ -1441,7 +1474,9 @@ gdm_local_display_factory_start (GdmDisplayFactory *ba +@@ -1532,7 +1573,9 @@ gdm_local_display_factory_start (GdmDisplayFactory *ba factory, 0); |