pkgsrc-wip/gdm/patches/patch-daemon_gdm-local-disp...

186 lines
7.1 KiB
Plaintext

$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 <rstrode@redhat.com>
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 <rstrode@redhat.com>
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
+++ daemon/gdm-local-display-factory.c
@@ -28,7 +28,9 @@
#include <glib-object.h>
#include <gio/gio.h>
+#ifdef WITH_SYSTEMD
#include <systemd/sd-login.h>
+#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,8 +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
#if defined(ENABLE_WAYLAND_SUPPORT) && defined(ENABLE_USER_DISPLAY_SERVER)
unsigned int active_vt;
@@ -87,7 +93,9 @@ static void on_display_status_changed
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,
@@ -231,7 +239,7 @@ gdm_local_display_factory_create_transient_display (Gd
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);
@@ -370,7 +378,7 @@ on_display_status_changed (GdmDisplay *dis
/* reset num failures */
factory->num_failures = 0;
- gdm_local_display_factory_sync_seats (factory);
+ create_display (factory, seat_id, session_type, is_initial);
}
break;
case GDM_DISPLAY_FAILED:
@@ -464,15 +472,19 @@ create_display (GdmLocalDisplayFactory *factory,
{
GdmDisplayStore *store;
GdmDisplay *display = NULL;
+#ifdef WITH_SYSTEMD
g_autofree char *login_session_id = NULL;
+#endif
g_debug ("GdmLocalDisplayFactory: %s login display for seat %s requested",
session_type? : "X11", seat_id);
store = gdm_display_factory_get_display_store (GDM_DISPLAY_FACTORY (factory));
+#ifdef WITH_SYSTEMD
if (sd_seat_can_multi_session (seat_id))
display = gdm_display_store_find (store, lookup_prepared_display_by_seat_id, (gpointer) seat_id);
else
+#endif
display = gdm_display_store_find (store, lookup_by_seat_id, (gpointer) seat_id);
/* Ensure we don't create the same display more than once */
@@ -481,6 +493,7 @@ create_display (GdmLocalDisplayFactory *factory,
return NULL;
}
+#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;
@@ -494,14 +507,15 @@ create_display (GdmLocalDisplayFactory *factory,
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_id (factory->connection, seat_id, login_session_id);
return NULL;
}
}
+#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 (g_strcmp0 (seat_id, "seat0") == 0) {
display = gdm_local_display_new ();
if (session_type != NULL) {
@@ -533,6 +547,7 @@ create_display (GdmLocalDisplayFactory *factory,
return display;
}
+#ifdef WITH_SYSTEMD
static void
delete_display (GdmLocalDisplayFactory *factory,
const char *seat_id) {
@@ -911,6 +926,7 @@ gdm_local_display_factory_stop_monitor (GdmLocalDispla
}
#endif
}
+#endif
static void
on_display_added (GdmDisplayStore *display_store,
@@ -944,6 +960,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);
@@ -962,8 +979,17 @@ gdm_local_display_factory_start (GdmDisplayFactory *ba
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. */
+ display = create_display (factory, CK_SEAT1_PATH, NULL, TRUE);
+
+ return display != NULL;
}
static gboolean
@@ -974,7 +1000,9 @@ gdm_local_display_factory_stop (GdmDisplayFactory *bas
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));
@@ -1126,7 +1154,9 @@ gdm_local_display_factory_finalize (GObject *object)
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);
}