12
0

Accepting request 1271340 from GNOME:Factory

- Update to version 48.1:
  + Cleanups and fixes
  + Power:
    - Ensure the backlight interface signal gets emitted on startup
    - Avoid using uninitialized value when restoring brightness
  + Sharing: Fixes to shutdown of sharing services
  + Updated translations.
- Drop gnome-settings-daemon-fix-stop-service.patch, 411.patch and
  413.patch, fixed upstream.
- Rebase patches with quilt. (forwarded request 1271073 from iznogood)

OBS-URL: https://build.opensuse.org/request/show/1271340
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/gnome-settings-daemon?expand=0&rev=202
This commit is contained in:
2025-04-23 13:18:07 +00:00
committed by Git OBS Bridge
13 changed files with 37 additions and 1846 deletions

View File

@@ -20,11 +20,11 @@ gadget, this will require users to "enroll" them the same ways.
.../gsd-usb-protection-manager.c | 58 +++++--------------
1 file changed, 15 insertions(+), 43 deletions(-)
Index: gnome-settings-daemon-48.alpha.1/plugins/usb-protection/gsd-usb-protection-manager.c
Index: gnome-settings-daemon-48.1/plugins/usb-protection/gsd-usb-protection-manager.c
===================================================================
--- gnome-settings-daemon-48.alpha.1.orig/plugins/usb-protection/gsd-usb-protection-manager.c
+++ gnome-settings-daemon-48.alpha.1/plugins/usb-protection/gsd-usb-protection-manager.c
@@ -679,56 +679,28 @@ on_usbguard_signal (GDBusProxy *proxy,
--- gnome-settings-daemon-48.1.orig/plugins/usb-protection/gsd-usb-protection-manager.c
+++ gnome-settings-daemon-48.1/plugins/usb-protection/gsd-usb-protection-manager.c
@@ -674,56 +674,28 @@ on_usbguard_signal (GDBusProxy *proxy,
* If this device advertises also interfaces outside the HID class, or the
* HUB class, it is suspect. It could be a false positive because this could
* be a "smart" keyboard for example, but at this stage is better be safe. */

1518
411.patch

File diff suppressed because it is too large Load Diff

164
413.patch
View File

@@ -1,164 +0,0 @@
From 216847a196bd407d6dda63053a28cb327d700188 Mon Sep 17 00:00:00 2001
From: Sebastian Keller <skeller@gnome.org>
Date: Mon, 31 Mar 2025 14:05:18 +0200
Subject: [PATCH] power: Avoid using uninitialized value when restoring
brightness
On laptops with an external monitor that don't suspend when the lid is
closed, display_backlight_dim() would get called while
builtin_display_disabled is true which causes
gsd_backlight_get_brightness() to return early without setting its out
parameter. That out parameter however is stored by
display_backlight_dim() as pre_dim_brightness to restore when the lid is
opened again.
When this happens, the brightness value is most likely out of range of
the min/max brightness percentage and thus PERCENTAGE_TO_ABS will return
-1 which then gets clamped to the minimum brightness value in
gsd_backlight_set_brightness_val_async().
Fix this separating the target brightness getter from
gsd_backlight_get_brightness(), because the latter was only ever used
to access one or the other, but never both values at the same time and
there is no shared code. This new getter will now also return -1 for
the target brightness when builtin_display_disabled is true. This will
cause display_backlight_dim() to return before attempting to change the
brightness and storing the previous brightness.
Closes: https://gitlab.gnome.org/GNOME/gnome-settings-daemon/-/issues/737
---
plugins/power/gsd-backlight.c | 32 ++++++++++++++++++++++++-------
plugins/power/gsd-backlight.h | 5 +++--
plugins/power/gsd-power-manager.c | 8 ++++----
3 files changed, 32 insertions(+), 13 deletions(-)
diff --git a/plugins/power/gsd-backlight.c b/plugins/power/gsd-backlight.c
index 84b339802..b018e519f 100644
--- a/plugins/power/gsd-backlight.c
+++ b/plugins/power/gsd-backlight.c
@@ -441,7 +441,6 @@ gsd_backlight_mutter_find_monitor (GsdBacklight *backlight,
/**
* gsd_backlight_get_brightness
* @backlight: a #GsdBacklight
- * @target: Output parameter for the value the target value of pending set operations.
*
* The backlight value returns the last known stable value. This value will
* only update once all pending operations to set a new value have finished.
@@ -456,17 +455,36 @@ gsd_backlight_mutter_find_monitor (GsdBacklight *backlight,
* Returns: The last stable backlight value or -1 if the internal display is disabled.
**/
gint
-gsd_backlight_get_brightness (GsdBacklight *backlight, gint *target)
+gsd_backlight_get_brightness (GsdBacklight *backlight)
{
if (backlight->builtin_display_disabled)
return -1;
- if (target)
- *target = ABS_TO_PERCENTAGE (backlight->brightness_min, backlight->brightness_max, backlight->brightness_target);
-
return ABS_TO_PERCENTAGE (backlight->brightness_min, backlight->brightness_max, backlight->brightness_val);
}
+/**
+ * gsd_backlight_get_target_brightness
+ * @backlight: a #GsdBacklight
+ *
+ * This returns the target value of the pending operations, which might differ
+ * from the last known stable value, but is identical to the last value set in
+ * the async setter.
+ *
+ * If the internal display is detected as disabled, then the function will
+ * instead return -1.
+ *
+ * Returns: The current target backlight value or -1 if the internal display is disabled.
+ **/
+gint
+gsd_backlight_get_target_brightness (GsdBacklight *backlight)
+{
+ if (backlight->builtin_display_disabled)
+ return -1;
+
+ return ABS_TO_PERCENTAGE (backlight->brightness_min, backlight->brightness_max, backlight->brightness_target);
+}
+
static void
gsd_backlight_set_brightness_val_async (GsdBacklight *backlight,
int value,
@@ -547,7 +565,7 @@ gsd_backlight_set_brightness_val_async (GsdBacklight *backlight,
backlight->brightness_val = value;
g_object_notify_by_pspec (G_OBJECT (backlight), props[PROP_BRIGHTNESS]);
- g_task_return_int (task, gsd_backlight_get_brightness (backlight, NULL));
+ g_task_return_int (task, gsd_backlight_get_brightness (backlight));
g_object_unref (task);
return;
@@ -775,7 +793,7 @@ gsd_backlight_get_property (GObject *object,
switch (prop_id) {
case PROP_BRIGHTNESS:
- g_value_set_int (value, gsd_backlight_get_brightness (backlight, NULL));
+ g_value_set_int (value, gsd_backlight_get_brightness (backlight));
break;
default:
diff --git a/plugins/power/gsd-backlight.h b/plugins/power/gsd-backlight.h
index 56216b62f..9bef62bf7 100644
--- a/plugins/power/gsd-backlight.h
+++ b/plugins/power/gsd-backlight.h
@@ -29,8 +29,9 @@ G_BEGIN_DECLS
#define GSD_TYPE_BACKLIGHT gsd_backlight_get_type ()
G_DECLARE_FINAL_TYPE (GsdBacklight, gsd_backlight, GSD, BACKLIGHT, GObject);
-gint gsd_backlight_get_brightness (GsdBacklight *backlight,
- gint *target);
+gint gsd_backlight_get_brightness (GsdBacklight *backlight);
+
+gint gsd_backlight_get_target_brightness (GsdBacklight *backlight);
void gsd_backlight_set_brightness_async (GsdBacklight *backlight,
gint percentage,
diff --git a/plugins/power/gsd-power-manager.c b/plugins/power/gsd-power-manager.c
index 436364a47..d1efee969 100644
--- a/plugins/power/gsd-power-manager.c
+++ b/plugins/power/gsd-power-manager.c
@@ -1640,7 +1640,7 @@ static void
backlight_notify_brightness_cb (GsdPowerManager *manager, GParamSpec *pspec, GsdBacklight *backlight)
{
backlight_iface_emit_changed (manager, GSD_POWER_DBUS_INTERFACE_SCREEN,
- gsd_backlight_get_brightness (backlight, NULL), NULL);
+ gsd_backlight_get_brightness (backlight), NULL);
}
static void
@@ -1654,7 +1654,7 @@ display_backlight_dim (GsdPowerManager *manager,
/* Fetch the current target brightness (not the actual display brightness)
* and return if it is already lower than the idle percentage. */
- gsd_backlight_get_brightness (manager->backlight, &brightness);
+ brightness = gsd_backlight_get_target_brightness (manager->backlight);
if (brightness < idle_percentage)
return;
@@ -3120,7 +3120,7 @@ gsd_power_manager_startup (GApplication *app)
(likely, considering that to get here we need a reply from gnome-shell)
*/
if (manager->backlight) {
- manager->ambient_percentage_old = gsd_backlight_get_brightness (manager->backlight, NULL);
+ manager->ambient_percentage_old = gsd_backlight_get_brightness (manager->backlight);
backlight_iface_emit_changed (manager, GSD_POWER_DBUS_INTERFACE_SCREEN,
manager->ambient_percentage_old, NULL);
} else {
@@ -3404,7 +3404,7 @@ handle_get_property_other (GsdPowerManager *manager,
}
if (manager->backlight)
- value = gsd_backlight_get_brightness (manager->backlight, NULL);
+ value = gsd_backlight_get_brightness (manager->backlight);
else
value = -1;
--
GitLab

View File

@@ -3,11 +3,11 @@
<service name="obs_scm" mode="manual">
<param name="scm">git</param>
<param name="url">https://gitlab.gnome.org/GNOME/gnome-settings-daemon.git</param>
<param name="revision">9e342142daf74e19fdc736beed19afd353c28016</param>
<param name="revision">48.1</param>
<param name="versionformat">@PARENT_TAG@+@TAG_OFFSET@</param>
<param name="versionrewrite-pattern">(.*)\+0</param>
<param name="versionrewrite-replacement">\1</param>
<param name="changesgenerate">enable</param>
<param name="changesgenerate">disable</param>
</service>
<service name="tar" mode="buildtime"/>
<service name="recompress" mode="buildtime">

View File

@@ -1,4 +0,0 @@
<servicedata>
<service name="tar_scm">
<param name="url">https://gitlab.gnome.org/GNOME/gnome-settings-daemon.git</param>
<param name="changesrevision">9e342142daf74e19fdc736beed19afd353c28016</param></service></servicedata>

View File

@@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:3613ab3bfcd7f73ff83c78f110cafafbb4a323218e9667f9d0627805d1a3b543
size 15332365

BIN
gnome-settings-daemon-48.1.obscpio (Stored with Git LFS) Normal file

Binary file not shown.

View File

@@ -1,131 +0,0 @@
From ebd24abc59b18c09fb21905945e57c03a02caca6 Mon Sep 17 00:00:00 2001
From: Joan Torres <joan.torres@suse.com>
Date: Wed, 11 Dec 2024 15:29:17 +0100
Subject: [PATCH 1/2] sharing: Stop assigned services properly on manager stop
Assigned services are started when sharing status is not offline.
But they were being stopped only when status is available.
To fix this, stop assigned services when status is not offline too.
This doesn't affect configurable services which weren't already started.
---
plugins/sharing/gsd-sharing-manager.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/plugins/sharing/gsd-sharing-manager.c b/plugins/sharing/gsd-sharing-manager.c
index 40b2bcc51..26e31da05 100644
--- a/plugins/sharing/gsd-sharing-manager.c
+++ b/plugins/sharing/gsd-sharing-manager.c
@@ -953,7 +953,7 @@ gsd_sharing_manager_shutdown (GApplication *app)
cancel_pending_wait_tasks (manager);
- if (manager->sharing_status == GSD_SHARING_STATUS_AVAILABLE &&
+ if (manager->sharing_status != GSD_SHARING_STATUS_OFFLINE &&
manager->connection != NULL) {
manager->sharing_status = GSD_SHARING_STATUS_OFFLINE;
gsd_sharing_manager_sync_services (manager);
--
GitLab
From d0b0d3a6971f0174c873c45ae20b5bf3bd91481b Mon Sep 17 00:00:00 2001
From: Joan Torres <joan.torres@suse.com>
Date: Tue, 14 Jan 2025 19:20:10 +0100
Subject: [PATCH 2/2] sharing: Wait for async service operations during
shutdown
Make a synchronization mechanism using a counter and a main loop.
This ensures that all systemd service operations are properly handled
before the sharing manager is fully stopped, preventing services from
being left in an inconsistent state.
This fixes an issue where the gnome-remote-desktop-handover.service was
not stopped on logout. Making the next user session use the same
handover daemon which is still listening to the old handover iface with
the old session id.
---
plugins/sharing/gsd-sharing-manager.c | 29 ++++++++++++++++++---------
1 file changed, 20 insertions(+), 9 deletions(-)
diff --git a/plugins/sharing/gsd-sharing-manager.c b/plugins/sharing/gsd-sharing-manager.c
index 26e31da05..9e44bd2c6 100644
--- a/plugins/sharing/gsd-sharing-manager.c
+++ b/plugins/sharing/gsd-sharing-manager.c
@@ -83,6 +83,9 @@ struct _GsdSharingManager
GsdSharingStatus sharing_status;
gboolean is_systemd_managed;
+
+ guint pending_sync_services;
+ GMainLoop *wait_sync_services_loop;
};
#define GSD_DBUS_NAME "org.gnome.SettingsDaemon"
@@ -147,9 +150,9 @@ handle_unit_cb (GObject *source_object,
GAsyncResult *res,
gpointer user_data)
{
- GError *error = NULL;
- GVariant *ret;
- const char *operation = user_data;
+ g_autoptr (GError) error = NULL;
+ g_autoptr (GVariant) ret = NULL;
+ GsdSharingManager *manager = user_data;
ret = g_dbus_connection_call_finish (G_DBUS_CONNECTION (source_object),
res, &error);
@@ -158,13 +161,13 @@ handle_unit_cb (GObject *source_object,
if (!g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED) &&
g_strcmp0 (remote_error, "org.freedesktop.systemd1.NoSuchUnit") != 0)
- g_warning ("Failed to %s service: %s", operation, error->message);
- g_error_free (error);
- return;
+ g_warning ("Failed to handle service: %s", error->message);
}
- g_variant_unref (ret);
-
+ manager->pending_sync_services--;
+ if (manager->pending_sync_services == 0 && manager->wait_sync_services_loop) {
+ g_main_loop_quit (manager->wait_sync_services_loop);
+ }
}
static void
@@ -174,6 +177,8 @@ gsd_sharing_manager_handle_service (GsdSharingManager *manager,
{
char *service_file;
+ manager->pending_sync_services++;
+
service_file = g_strdup_printf ("%s.service", service_name);
g_dbus_connection_call (manager->connection,
"org.freedesktop.systemd1",
@@ -186,7 +191,7 @@ gsd_sharing_manager_handle_service (GsdSharingManager *manager,
-1,
manager->cancellable,
handle_unit_cb,
- (gpointer) method);
+ (gpointer) manager);
g_free (service_file);
}
@@ -959,6 +964,12 @@ gsd_sharing_manager_shutdown (GApplication *app)
gsd_sharing_manager_sync_services (manager);
}
+ if (manager->pending_sync_services > 0) {
+ manager->wait_sync_services_loop = g_main_loop_new (NULL, FALSE);
+ g_main_loop_run (manager->wait_sync_services_loop);
+ g_clear_pointer (&manager->wait_sync_services_loop, g_main_loop_unref);
+ }
+
if (manager->cancellable) {
g_cancellable_cancel (manager->cancellable);
g_clear_object (&manager->cancellable);
--
GitLab

View File

@@ -13,11 +13,11 @@ https://bugzilla.suse.com/show_bug.cgi?id=979051
plugins/keyboard/gsd-keyboard-manager.c | 18 +++++++++++++-----
1 file changed, 13 insertions(+), 5 deletions(-)
Index: gnome-settings-daemon-48.alpha.1/plugins/keyboard/gsd-keyboard-manager.c
Index: gnome-settings-daemon-48.1/plugins/keyboard/gsd-keyboard-manager.c
===================================================================
--- gnome-settings-daemon-48.alpha.1.orig/plugins/keyboard/gsd-keyboard-manager.c
+++ gnome-settings-daemon-48.alpha.1/plugins/keyboard/gsd-keyboard-manager.c
@@ -207,7 +207,7 @@ settings_changed (GSettings *se
--- gnome-settings-daemon-48.1.orig/plugins/keyboard/gsd-keyboard-manager.c
+++ gnome-settings-daemon-48.1/plugins/keyboard/gsd-keyboard-manager.c
@@ -206,7 +206,7 @@ settings_changed (GSettings *se
}
static void
@@ -26,7 +26,7 @@ Index: gnome-settings-daemon-48.alpha.1/plugins/keyboard/gsd-keyboard-manager.c
{
GVariantBuilder builder;
GVariant *v;
@@ -225,7 +225,7 @@ get_sources_from_xkb_config (GsdKeyboard
@@ -224,7 +224,7 @@ get_sources_from_xkb_config (GsdKeyboard
init_builder_with_sources (&builder, manager->input_sources_settings);
@@ -35,7 +35,7 @@ Index: gnome-settings-daemon-48.alpha.1/plugins/keyboard/gsd-keyboard-manager.c
g_variant_builder_add (&builder, "(ss)", INPUT_SOURCE_TYPE_XKB, DEFAULT_LAYOUT);
goto out;
}
@@ -404,15 +404,23 @@ maybe_create_initial_settings (GsdKeyboa
@@ -403,15 +403,23 @@ maybe_create_initial_settings (GsdKeyboa
settings = manager->input_sources_settings;

View File

@@ -1,8 +1,8 @@
Index: b/plugins/keyboard/gsd-keyboard-manager.c
Index: gnome-settings-daemon-48.1/plugins/keyboard/gsd-keyboard-manager.c
===================================================================
--- a/plugins/keyboard/gsd-keyboard-manager.c
+++ b/plugins/keyboard/gsd-keyboard-manager.c
@@ -251,7 +251,11 @@ get_sources_from_xkb_config (GsdKeyboard
--- gnome-settings-daemon-48.1.orig/plugins/keyboard/gsd-keyboard-manager.c
+++ gnome-settings-daemon-48.1/plugins/keyboard/gsd-keyboard-manager.c
@@ -250,7 +250,11 @@ get_sources_from_xkb_config (GsdKeyboard
else
id = g_strdup (layouts[i]);

View File

@@ -1,3 +1,17 @@
-------------------------------------------------------------------
Sat Apr 19 07:10:09 UTC 2025 - Bjørn Lie <bjorn.lie@gmail.com>
- Update to version 48.1:
+ Cleanups and fixes
+ Power:
- Ensure the backlight interface signal gets emitted on startup
- Avoid using uninitialized value when restoring brightness
+ Sharing: Fixes to shutdown of sharing services
+ Updated translations.
- Drop gnome-settings-daemon-fix-stop-service.patch, 411.patch and
413.patch, fixed upstream.
- Rebase patches with quilt.
-------------------------------------------------------------------
Tue Apr 01 09:29:02 UTC 2025 - Bjørn Lie <bjorn.lie@gmail.com>

View File

@@ -1,4 +1,4 @@
name: gnome-settings-daemon
version: 48.0+3
mtime: 1743239595
commit: 9e342142daf74e19fdc736beed19afd353c28016
version: 48.1
mtime: 1745039524
commit: 306e33d135cdced34c8ed4e2bf257727a079c75a

View File

@@ -30,7 +30,7 @@
%define base_ver 48
Name: gnome-settings-daemon
Version: 48.0+3
Version: 48.1
Release: 0
Summary: Settings daemon for the GNOME desktop
License: GPL-2.0-or-later AND LGPL-2.1-only
@@ -44,12 +44,6 @@ Patch0: gnome-settings-daemon-initial-keyboard.patch
Patch1: gnome-settings-daemon-switch-Japanese-default-input-to-mozc.patch
# PATCH-FIX-UPSTREAM 0001-usb-protection-Treat-hubs-and-HID-devices-like-any-o.patch glgo#GNOME/gnome-settings-daemon#780, bsc#1226423, CVE-2024-38394 sckang@suse.com -- usb-protection: Treat hubs and HID devices like any other USB gadget
Patch4: 0001-usb-protection-Treat-hubs-and-HID-devices-like-any-o.patch
# PATCH-FIX-UPSTREAM gnome-settings-daemon-fix-stop-service.patch bsc#1233824 glgo#GNOME/gnome-settings-daemon!395-- sharing: Stop systemd service waiting when daemon is stopping
Patch5: gnome-settings-daemon-fix-stop-service.patch
# PATCH-FIX-UPSTREAM 411.patch -- power: Ensure backlight iface signal gets emited on startup
Patch6: https://gitlab.gnome.org/GNOME/gnome-settings-daemon/-/merge_requests/411.patch
# PATCH-FIX-UPSTREAM 413.patch -- power: Avoid using uninitialized value when restoring brightness
Patch7: https://gitlab.gnome.org/GNOME/gnome-settings-daemon/-/merge_requests/413.patch
## SLE/LEAP-only patches start at 1000
# PATCH-FEATURE-OPENSUSE gnome-settings-daemon-notify-idle-resumed.patch bnc#439018 bnc#708182 bgo#575467 hpj@suse.com -- notify user about auto suspend when returning from sleep