$NetBSD: patch-daemon_gdm-local-display-factory_c,v 1.1 2021/04/16 13:57:52 cirnatdan Exp $ $OpenBSD: patch-daemon_gdm-local-display-factory_c,v 1.13 2019/11/02 15:34:07 ajacoutot Exp $ REVERT - OpenBSD does not have a systemd implementation (we need ConsoleKit) From 1ac67f522f5690c27023d98096ca817f12f7eb88 Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Fri, 12 Jun 2015 13:28:01 -0400 Subject: drop consolekit support REVERT - OpenBSD does not have a systemd implementation (we need ConsoleKit) From 9be58c9ec9a3a411492a5182ac4b0d51fdc3a323 Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Fri, 12 Jun 2015 13:48:52 -0400 Subject: require logind support Index: daemon/gdm-local-display-factory.c --- daemon/gdm-local-display-factory.c.orig 2021-03-16 20:48:04.000000000 +0000 +++ daemon/gdm-local-display-factory.c @@ -28,7 +28,9 @@ #include #include +#ifdef WITH_SYSTEMD #include +#endif #include "gdm-common.h" #include "gdm-manager.h" @@ -42,6 +44,8 @@ #include "gdm-local-display.h" #include "gdm-legacy-display.h" +#define CK_SEAT1_PATH "/org/freedesktop/ConsoleKit/Seat1" + #define GDM_DBUS_PATH "/org/gnome/DisplayManager" #define GDM_LOCAL_DISPLAY_FACTORY_DBUS_PATH GDM_DBUS_PATH "/LocalDisplayFactory" #define GDM_MANAGER_DBUS_NAME "org.gnome.DisplayManager.LocalDisplayFactory" @@ -60,9 +64,10 @@ struct _GdmLocalDisplayFactory /* FIXME: this needs to be per seat? */ guint num_failures; - +#ifdef WITH_SYSTEMD guint seat_new_id; guint seat_removed_id; +#endif guint seat_properties_changed_id; gboolean seat0_graphics_check_timed_out; @@ -89,8 +94,9 @@ static void ensure_display_for_seat static void on_display_status_changed (GdmDisplay *display, GParamSpec *arg1, GdmLocalDisplayFactory *factory); - +#ifdef WITH_SYSTEMD static gboolean gdm_local_display_factory_sync_seats (GdmLocalDisplayFactory *factory); +#endif static gpointer local_display_factory_object = NULL; static gboolean lookup_by_session_id (const char *id, GdmDisplay *display, @@ -235,7 +241,7 @@ gdm_local_display_factory_create_transie g_debug ("GdmLocalDisplayFactory: Creating transient display"); -#ifdef ENABLE_USER_DISPLAY_SERVER +#if defined(ENABLE_USER_DISPLAY_SERVER) && defined(WITH_SYSTEMD) display = gdm_local_display_new (); if (gdm_local_display_factory_use_wayland ()) g_object_set (G_OBJECT (display), "session-type", "wayland", NULL); @@ -376,7 +382,7 @@ on_display_status_changed (GdmDisplay /* reset num failures */ factory->num_failures = 0; - gdm_local_display_factory_sync_seats (factory); + ensure_display_for_seat (factory, seat_id); } break; case GDM_DISPLAY_FAILED: @@ -480,9 +486,10 @@ ensure_display_for_seat (GdmLocalDisplay const char *session_type = "wayland"; GdmDisplayStore *store; GdmDisplay *display = NULL; +#ifdef WITH_SYSTEMD g_autofree char *login_session_id = NULL; - ret = sd_seat_can_graphical (seat_id); + ret = sd_seat_can_graphical (seat_id); if (ret < 0) { g_critical ("Failed to query CanGraphical information for seat %s", seat_id); @@ -496,7 +503,7 @@ ensure_display_for_seat (GdmLocalDisplay g_debug ("GdmLocalDisplayFactory: System supports graphics"); seat_supports_graphics = TRUE; } - +#endif if (g_strcmp0 (seat_id, "seat0") == 0) { is_seat0 = TRUE; @@ -575,7 +582,7 @@ ensure_display_for_seat (GdmLocalDisplay g_debug ("GdmLocalDisplayFactory: display already created"); return; } - +#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; @@ -589,14 +596,14 @@ ensure_display_for_seat (GdmLocalDisplay g_object_set (G_OBJECT (display), "status", GDM_DISPLAY_MANAGED, NULL); g_debug ("GdmLocalDisplayFactory: session %s found, activating.", login_session_id); - gdm_activate_session_by_id (factory->connection, seat_id, login_session_id); + activate_session_by_id (factory->connection, seat_id, login_session_id); return; } } - +#endif g_debug ("GdmLocalDisplayFactory: Adding display on seat %s", seat_id); -#ifdef ENABLE_USER_DISPLAY_SERVER +#if defined(ENABLE_USER_DISPLAY_SERVER) && defined(WITH_SYSTEMD) if (is_seat0) { display = gdm_local_display_new (); if (session_type != NULL) { @@ -627,7 +634,7 @@ ensure_display_for_seat (GdmLocalDisplay return; } - +#ifdef WITH_SYSTEMD static void delete_display (GdmLocalDisplayFactory *factory, const char *seat_id) { @@ -791,7 +798,7 @@ lookup_by_tty (const char *id, return g_strcmp0 (tty_to_check, tty_to_find) == 0; } -#if defined(ENABLE_USER_DISPLAY_SERVER) +#if defined(ENABLE_USER_DISPLAY_SERVER) && defined(WITH_SYSTEMD) static void maybe_stop_greeter_in_background (GdmLocalDisplayFactory *factory, GdmDisplay *display) @@ -1046,7 +1053,7 @@ gdm_local_display_factory_stop_monitor ( } #endif } - +#endif static void on_display_added (GdmDisplayStore *display_store, const char *id, @@ -1079,6 +1086,7 @@ static gboolean gdm_local_display_factory_start (GdmDisplayFactory *base_factory) { GdmLocalDisplayFactory *factory = GDM_LOCAL_DISPLAY_FACTORY (base_factory); + GdmDisplay *display; GdmDisplayStore *store; g_return_val_if_fail (GDM_IS_LOCAL_DISPLAY_FACTORY (factory), FALSE); @@ -1097,8 +1105,15 @@ gdm_local_display_factory_start (GdmDisp factory, 0); - gdm_local_display_factory_start_monitor (factory); - return gdm_local_display_factory_sync_seats (factory); +#ifdef WITH_SYSTEMD + if (LOGIND_RUNNING()) { + gdm_local_display_factory_start_monitor (factory); + return gdm_local_display_factory_sync_seats (factory); + } +#endif + /* On ConsoleKit just create Seat1, and that's it. */ + ensure_display_for_seat (factory, CK_SEAT1_PATH); + return TRUE; } static gboolean @@ -1108,9 +1123,9 @@ gdm_local_display_factory_stop (GdmDispl GdmDisplayStore *store; g_return_val_if_fail (GDM_IS_LOCAL_DISPLAY_FACTORY (factory), FALSE); - +#ifdef WITH_SYSTEMD gdm_local_display_factory_stop_monitor (factory); - +#endif store = gdm_display_factory_get_display_store (GDM_DISPLAY_FACTORY (factory)); g_signal_handlers_disconnect_by_func (G_OBJECT (store), @@ -1262,9 +1277,9 @@ gdm_local_display_factory_finalize (GObj g_clear_object (&factory->skeleton); g_hash_table_destroy (factory->used_display_numbers); - +#ifdef WITH_SYSTEMD gdm_local_display_factory_stop_monitor (factory); - +#endif G_OBJECT_CLASS (gdm_local_display_factory_parent_class)->finalize (object); }