fix daemon error on shutdown
This commit is contained in:
parent
73a1c07a64
commit
2a38ba02dc
121
0001-daemon-Don-t-error-on-shutdown.patch
Normal file
121
0001-daemon-Don-t-error-on-shutdown.patch
Normal file
@ -0,0 +1,121 @@
|
||||
From 9791ab077c5ada6ded2f9d9e5553475ba3428530 Mon Sep 17 00:00:00 2001
|
||||
From: lyn1001 <thistleslyn@163.com>
|
||||
Date: Mon, 8 Apr 2024 13:22:31 +0800
|
||||
Subject: [PATCH] daemon Don't error on shutdown
|
||||
|
||||
|
||||
diff --git a/daemon/gdm-display.c b/daemon/gdm-display.c
|
||||
index 46d5a77..c785a6a 100644
|
||||
--- a/daemon/gdm-display.c
|
||||
+++ b/daemon/gdm-display.c
|
||||
@@ -93,6 +93,7 @@ typedef struct _GdmDisplayPrivate
|
||||
guint have_existing_user_accounts : 1;
|
||||
guint doing_initial_setup : 1;
|
||||
guint session_registered : 1;
|
||||
+ guint shutting_down : 1;
|
||||
|
||||
GStrv supported_session_types;
|
||||
} GdmDisplayPrivate;
|
||||
@@ -119,6 +120,7 @@ enum {
|
||||
PROP_DOING_INITIAL_SETUP,
|
||||
PROP_SESSION_REGISTERED,
|
||||
PROP_SUPPORTED_SESSION_TYPES,
|
||||
+ PROP_SHUTTING_DOWN,
|
||||
};
|
||||
|
||||
static void gdm_display_class_init (GdmDisplayClass *klass);
|
||||
@@ -691,8 +693,7 @@ gdm_display_unmanage (GdmDisplay *self)
|
||||
g_object_unref (priv->access_file);
|
||||
priv->access_file = NULL;
|
||||
}
|
||||
-
|
||||
- if (!priv->session_registered) {
|
||||
+ if (!priv->session_registered && !priv->shutting_down) {
|
||||
g_warning ("GdmDisplay: Session never registered, failing");
|
||||
_gdm_display_set_status (self, GDM_DISPLAY_FAILED);
|
||||
} else {
|
||||
@@ -878,6 +879,16 @@ _gdm_display_set_session_registered (GdmDisplay *self,
|
||||
priv->session_registered = registered;
|
||||
}
|
||||
|
||||
+static void
|
||||
+_gdm_display_set_shutting_down (GdmDisplay *self,
|
||||
+ gboolean shutting_down)
|
||||
+{
|
||||
+ GdmDisplayPrivate *priv;
|
||||
+
|
||||
+ priv = gdm_display_get_instance_private (self);
|
||||
+ priv->shutting_down = shutting_down;
|
||||
+}
|
||||
+
|
||||
static void
|
||||
_gdm_display_set_launch_environment (GdmDisplay *self,
|
||||
GdmLaunchEnvironment *launch_environment)
|
||||
@@ -989,6 +1000,9 @@ gdm_display_set_property (GObject *object,
|
||||
case PROP_SUPPORTED_SESSION_TYPES:
|
||||
_gdm_display_set_supported_session_types (self, g_value_get_boxed (value));
|
||||
break;
|
||||
+ case PROP_SHUTTING_DOWN:
|
||||
+ _gdm_display_set_shutting_down (self, g_value_get_boolean (value));
|
||||
+ break;
|
||||
default:
|
||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
||||
break;
|
||||
@@ -1070,6 +1084,9 @@ gdm_display_get_property (GObject *object,
|
||||
case PROP_SUPPORTED_SESSION_TYPES:
|
||||
g_value_set_boxed (value, priv->supported_session_types);
|
||||
break;
|
||||
+ case PROP_SHUTTING_DOWN:
|
||||
+ g_value_set_boolean (value, priv->shutting_down);
|
||||
+ break;
|
||||
default:
|
||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
||||
break;
|
||||
@@ -1424,6 +1441,13 @@ gdm_display_class_init (GdmDisplayClass *klass)
|
||||
"supported session types",
|
||||
G_TYPE_STRV,
|
||||
G_PARAM_READWRITE | G_PARAM_CONSTRUCT | G_PARAM_STATIC_STRINGS));
|
||||
+
|
||||
+ g_object_class_install_property (object_class,
|
||||
+ PROP_SHUTTING_DOWN,
|
||||
+ g_param_spec_boolean ("shutting-down",
|
||||
+ NULL, NULL,
|
||||
+ FALSE,
|
||||
+ G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
|
||||
}
|
||||
|
||||
static void
|
||||
diff --git a/daemon/gdm-manager.c b/daemon/gdm-manager.c
|
||||
index cc61efc..072ae97 100644
|
||||
--- a/daemon/gdm-manager.c
|
||||
+++ b/daemon/gdm-manager.c
|
||||
@@ -2746,11 +2746,14 @@ unexport_display (const char *id,
|
||||
}
|
||||
|
||||
static void
|
||||
-finish_display (const char *id,
|
||||
- GdmDisplay *display,
|
||||
- GdmManager *manager)
|
||||
+shut_down_display (const char *id,
|
||||
+ GdmDisplay *display,
|
||||
+ GdmManager *manager)
|
||||
{
|
||||
gdm_display_stop_greeter_session (display);
|
||||
+
|
||||
+ g_object_set (G_OBJECT (display), "shutting-down", TRUE, NULL);
|
||||
+
|
||||
if (gdm_display_get_status (display) == GDM_DISPLAY_MANAGED)
|
||||
gdm_display_unmanage (display);
|
||||
gdm_display_finish (display);
|
||||
@@ -2802,7 +2805,7 @@ gdm_manager_dispose (GObject *object)
|
||||
}
|
||||
|
||||
gdm_display_store_foreach (manager->priv->display_store,
|
||||
- (GdmDisplayStoreFunc) finish_display,
|
||||
+ (GdmDisplayStoreFunc) shut_down_display,
|
||||
manager);
|
||||
|
||||
gdm_display_store_clear (manager->priv->display_store);
|
||||
--
|
||||
2.43.0
|
||||
|
||||
6
gdm.spec
6
gdm.spec
@ -9,7 +9,7 @@
|
||||
Name: gdm
|
||||
Epoch: 1
|
||||
Version: 43.0
|
||||
Release: 2
|
||||
Release: 3
|
||||
Summary: The GNOME Display Manager
|
||||
License: GPLv2+
|
||||
URL: https://wiki.gnome.org/Projects/GDM
|
||||
@ -19,6 +19,7 @@ Source5: default.pa-for-gdm
|
||||
|
||||
Patch0: 0001-Honor-initial-setup-being-disabled-by-distro-install.patch
|
||||
Patch1: 0001-data-add-system-dconf-databases-to-gdm-profile.patch
|
||||
Patch2: 0001-daemon-Don-t-error-on-shutdown.patch
|
||||
|
||||
BuildRequires: accountsservice-devel
|
||||
BuildRequires: audit-libs-devel >= %{libauditver}
|
||||
@ -279,6 +280,9 @@ fi
|
||||
%{_libdir}/pkgconfig/gdm-pam-extensions.pc
|
||||
|
||||
%changelog
|
||||
* Mon Apr 8 2024 liyanan <liyanan61@h-partners.com> - 1:43.0-3
|
||||
- fix daemon error on shutdown
|
||||
|
||||
* Wed Mar 13 2024 panchenbo <panchenbo@kylinsec.com.cn> - 1:43.0-2
|
||||
- modify openEuler to %{_vendor}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user