From 5695287d9c5deddc6342d198df670c4b3bb9956f Mon Sep 17 00:00:00 2001 From: CentOS Sources Date: Tue, 28 Mar 2023 10:14:12 +0000 Subject: [PATCH] import gnome-settings-daemon-40.0.1-10.el9 --- ...n-action-always-power-off-when-chass.patch | 45 +++++++++++++++ ...e-nothing-power-button-action-for-VM.patch | 57 +++++++++++++++++++ .../print-notifications-clear-in-stop.patch | 45 +++++++++++++++ SPECS/gnome-settings-daemon.spec | 14 ++++- 4 files changed, 160 insertions(+), 1 deletion(-) create mode 100644 SOURCES/0001-Make-power-button-action-always-power-off-when-chass.patch create mode 100644 SOURCES/0001-power-Respect-the-nothing-power-button-action-for-VM.patch create mode 100644 SOURCES/print-notifications-clear-in-stop.patch diff --git a/SOURCES/0001-Make-power-button-action-always-power-off-when-chass.patch b/SOURCES/0001-Make-power-button-action-always-power-off-when-chass.patch new file mode 100644 index 0000000..baac87c --- /dev/null +++ b/SOURCES/0001-Make-power-button-action-always-power-off-when-chass.patch @@ -0,0 +1,45 @@ +From a94fd3a1a055c55f96adb1482cb96c7a541af7dd Mon Sep 17 00:00:00 2001 +From: Felipe Borges +Date: Wed, 15 Feb 2023 15:27:59 +0100 +Subject: [PATCH] Make power-button-action always power off when chassis=server + +Servers often don't support hibernation/suspend. +--- + .../org.gnome.settings-daemon.plugins.power.gschema.xml.in | 2 +- + plugins/media-keys/gsd-media-keys-manager.c | 7 ++++--- + 2 files changed, 5 insertions(+), 4 deletions(-) + +diff --git a/data/org.gnome.settings-daemon.plugins.power.gschema.xml.in b/data/org.gnome.settings-daemon.plugins.power.gschema.xml.in +index e1a8787b..ef0ea530 100644 +--- a/data/org.gnome.settings-daemon.plugins.power.gschema.xml.in ++++ b/data/org.gnome.settings-daemon.plugins.power.gschema.xml.in +@@ -39,7 +39,7 @@ + + 'suspend' + Power button action +- The action to take when the system power button is pressed. Virtual machines only honor the 'nothing' action, and will shutdown otherwise. Tablets always suspend, ignoring all the other action options. ++ The action to take when the system power button is pressed. Virtual machines and servers only honor the 'nothing' action, and will shutdown otherwise. Tablets always suspend, ignoring all the other action options. + + + true +diff --git a/plugins/media-keys/gsd-media-keys-manager.c b/plugins/media-keys/gsd-media-keys-manager.c +index 60ff2ced..26d0e438 100644 +--- a/plugins/media-keys/gsd-media-keys-manager.c ++++ b/plugins/media-keys/gsd-media-keys-manager.c +@@ -2042,9 +2042,10 @@ do_config_power_button_action (GsdMediaKeysManager *manager, + return; + + action_type = g_settings_get_enum (priv->power_settings, "power-button-action"); +- /* Always power off VMs, except when power-button-action is "nothing" */ +- if (g_strcmp0 (priv->chassis_type, "vm") == 0) { +- g_warning_once ("Virtual machines only honor the 'nothing' power-button-action, and will shutdown otherwise"); ++ /* Always power off VMs and servers, except when power-button-action is "nothing" */ ++ if (g_strcmp0 (priv->chassis_type, "vm") == 0 || ++ g_strcmp0 (priv->chassis_type, "server")) { ++ g_warning ("Virtual machines only honor the 'nothing' power-button-action, and will shutdown otherwise"); + + if (action_type != GSD_POWER_BUTTON_ACTION_NOTHING) + power_action (manager, "PowerOff", FALSE); +-- +2.37.1 + diff --git a/SOURCES/0001-power-Respect-the-nothing-power-button-action-for-VM.patch b/SOURCES/0001-power-Respect-the-nothing-power-button-action-for-VM.patch new file mode 100644 index 0000000..fbd79b1 --- /dev/null +++ b/SOURCES/0001-power-Respect-the-nothing-power-button-action-for-VM.patch @@ -0,0 +1,57 @@ +From f71fb47c3f783f3405bd910e1e170dc5e1f10e7c Mon Sep 17 00:00:00 2001 +From: Felipe Borges +Date: Wed, 4 Jan 2023 13:41:31 +0100 +Subject: [PATCH] power: Respect the "nothing" power-button-action for VMs + +There are use-cases when one wants to forcefully make the guest ignore +poweroff requests from the hypervisor. + +See https://bugzilla.redhat.com/2062051 + +See also https://gitlab.gnome.org/GNOME/gnome-settings-daemon/-/issues/46 +--- + ....gnome.settings-daemon.plugins.power.gschema.xml.in | 2 +- + plugins/media-keys/gsd-media-keys-manager.c | 10 +++++++--- + 2 files changed, 8 insertions(+), 4 deletions(-) + +diff --git a/data/org.gnome.settings-daemon.plugins.power.gschema.xml.in b/data/org.gnome.settings-daemon.plugins.power.gschema.xml.in +index 04b287bd..e1a8787b 100644 +--- a/data/org.gnome.settings-daemon.plugins.power.gschema.xml.in ++++ b/data/org.gnome.settings-daemon.plugins.power.gschema.xml.in +@@ -39,7 +39,7 @@ + + 'suspend' + Power button action +- The action to take when the system power button is pressed. This action is hard-coded (and the setting ignored) on virtual machines (power off) and tablets (suspend). ++ The action to take when the system power button is pressed. Virtual machines only honor the 'nothing' action, and will shutdown otherwise. Tablets always suspend, ignoring all the other action options. + + + true +diff --git a/plugins/media-keys/gsd-media-keys-manager.c b/plugins/media-keys/gsd-media-keys-manager.c +index 15e96e0e..60ff2ced 100644 +--- a/plugins/media-keys/gsd-media-keys-manager.c ++++ b/plugins/media-keys/gsd-media-keys-manager.c +@@ -2041,13 +2041,17 @@ do_config_power_button_action (GsdMediaKeysManager *manager, + if (priv->power_button_disabled) + return; + +- /* Always power off VMs when power off is pressed in the menus */ ++ action_type = g_settings_get_enum (priv->power_settings, "power-button-action"); ++ /* Always power off VMs, except when power-button-action is "nothing" */ + if (g_strcmp0 (priv->chassis_type, "vm") == 0) { +- power_action (manager, "PowerOff", !in_lock_screen); ++ g_warning_once ("Virtual machines only honor the 'nothing' power-button-action, and will shutdown otherwise"); ++ ++ if (action_type != GSD_POWER_BUTTON_ACTION_NOTHING) ++ power_action (manager, "PowerOff", FALSE); ++ + return; + } + +- action_type = g_settings_get_enum (priv->power_settings, "power-button-action"); + switch (action_type) { + case GSD_POWER_BUTTON_ACTION_SUSPEND: + action = GSD_POWER_ACTION_SUSPEND; +-- +2.37.1 + diff --git a/SOURCES/print-notifications-clear-in-stop.patch b/SOURCES/print-notifications-clear-in-stop.patch new file mode 100644 index 0000000..649defd --- /dev/null +++ b/SOURCES/print-notifications-clear-in-stop.patch @@ -0,0 +1,45 @@ +--- gnome-settings-daemon-40.0.1/plugins/print-notifications/gsd-print-notifications-manager.c ++++ gnome-settings-daemon-40.0.1/plugins/print-notifications/gsd-print-notifications-manager.c +@@ -1268,6 +1268,7 @@ scp_handler (GsdPrintNotificationsManage + kill (manager->scp_handler_pid, SIGHUP); + g_spawn_close_pid (manager->scp_handler_pid); + manager->scp_handler_spawned = FALSE; ++ manager->scp_handler_pid = -1; + } + } + +@@ -1636,8 +1636,10 @@ gsd_print_notifications_manager_stop (Gs + manager->check_source_id = 0; + } + +- if (manager->subscription_id >= 0) ++ if (manager->subscription_id >= 0) { + cancel_subscription (manager->subscription_id); ++ manager->subscription_id = -1; ++ } + + g_clear_pointer (&manager->printing_printers, g_hash_table_destroy); + +@@ -1649,6 +1651,7 @@ gsd_print_notifications_manager_stop (Gs + g_source_remove (data->timeout_id); + } + g_list_free_full (manager->timeouts, free_timeout_data); ++ manager->timeouts = NULL; + + for (tmp = manager->active_notifications; tmp; tmp = g_list_next (tmp)) { + reason_data = (ReasonData *) tmp->data; +@@ -1665,12 +1668,14 @@ gsd_print_notifications_manager_stop (Gs + } + } + g_list_free_full (manager->active_notifications, free_reason_data); ++ manager->active_notifications = NULL; + + for (tmp = manager->held_jobs; tmp; tmp = g_list_next (tmp)) { + job = (HeldJob *) tmp->data; + g_source_remove (job->timeout_id); + } + g_list_free_full (manager->held_jobs, free_held_job); ++ manager->held_jobs = NULL; + + scp_handler (manager, FALSE); + } diff --git a/SPECS/gnome-settings-daemon.spec b/SPECS/gnome-settings-daemon.spec index 441bad7..9e95b15 100644 --- a/SPECS/gnome-settings-daemon.spec +++ b/SPECS/gnome-settings-daemon.spec @@ -11,7 +11,7 @@ Name: gnome-settings-daemon Version: 40.0.1 -Release: 8%{?dist} +Release: 10%{?dist} Summary: The daemon sharing settings from GNOME to GTK+/KDE applications License: GPLv2+ @@ -70,6 +70,9 @@ Requires: libgweather%{?_isa} >= %{libgweather_version} Patch00001: 0001-power-Enable-power-saver-profile-when-low-on-battery.patch Patch00002: subscription-manager-support.patch Patch00003: im-module-setting-fix.patch +Patch00004: print-notifications-clear-in-stop.patch +Patch00005: 0001-power-Respect-the-nothing-power-button-action-for-VM.patch +Patch00006: 0001-Make-power-button-action-always-power-off-when-chass.patch %description A daemon to share settings from GNOME to other applications. It also @@ -195,6 +198,15 @@ cp %{SOURCE1} $RPM_BUILD_ROOT%{_datadir}/glib-2.0/schemas %{_libdir}/pkgconfig/gnome-settings-daemon.pc %changelog +* Wed Feb 22 2023 Felipe Borges - 40.0.1-10 +- Default power-button-action to poweroff on servers + (except when power-button-action=nothing) + Resolves: #1885639 + +* Mon Feb 20 2023 Marek Kasik - 40.0.1-9 +- Clear members of GsdPrintNotificationsManager in stop() + Resolves: #2166842 + * Mon Aug 01 2022 Felipe Borges - 40.0.1-8 - Fix registration with activation key Resolves: #2100467