diff --git a/SOURCES/0001-smartcard-Cancel-cancellable-when-stopping.patch b/SOURCES/0001-smartcard-Cancel-cancellable-when-stopping.patch new file mode 100644 index 0000000..4ddcdef --- /dev/null +++ b/SOURCES/0001-smartcard-Cancel-cancellable-when-stopping.patch @@ -0,0 +1,58 @@ +From a1c2685bc6b255f22b6ce4645c001d428cb67907 Mon Sep 17 00:00:00 2001 +From: Marek Kasik +Date: Wed, 22 May 2019 14:56:42 +0200 +Subject: [PATCH] smartcard: Cancel cancellable when stopping + +self->cancellable in GsdSmartcardManager is not cancelled +at gsd_smartcard_manager_stop() and hence some callbacks are +still called after unload_nss() which clears SECMODListLock +which is used by SECMOD_GetReadLock() / SECMOD_ReleaseReadLock(). + +This leads to crashes in NSSRWLock_LockRead_Util() and +NSSRWLock_UnlockRead_Util() probably. + +Also check for return value of g_cancellable_connect() +and initialize pointer to PK11SlotInfo. + +See https://bugzilla.redhat.com/show_bug.cgi?id=1646359, +https://bugzilla.redhat.com/show_bug.cgi?id=1688791 and +their duplicates for additional info. +--- + plugins/smartcard/gsd-smartcard-manager.c | 7 +++++-- + 1 file changed, 5 insertions(+), 2 deletion(-) + +diff --git a/plugins/smartcard/gsd-smartcard-manager.c b/plugins/smartcard/gsd-smartcard-manager.c +index 014c17be..da1e0d6d 100644 +--- a/plugins/smartcard/gsd-smartcard-manager.c ++++ b/plugins/smartcard/gsd-smartcard-manager.c +@@ -184,7 +184,7 @@ + GError **error) + { + GsdSmartcardManagerPrivate *priv = self->priv; +- PK11SlotInfo *card, *old_card; ++ PK11SlotInfo *card = NULL, *old_card; + CK_SLOT_ID slot_id; + gulong handler_id; + int old_slot_series = -1, slot_series; +@@ -190,7 +190,8 @@ watch_one_event_from_driver (GsdSmartcardManager *self, + operation, + NULL); + +- card = SECMOD_WaitForAnyTokenEvent (operation->driver, 0, PR_SecondsToInterval (1)); ++ if (handler_id != 0) ++ card = SECMOD_WaitForAnyTokenEvent (operation->driver, 0, PR_SecondsToInterval (1)); + + g_cancellable_disconnect (cancellable, handler_id); + +@@ -773,6 +774,8 @@ gsd_smartcard_manager_stop (GsdSmartcardManager *self) + + g_debug ("Stopping smartcard manager"); + ++ g_cancellable_cancel (priv->cancellable); ++ + unload_nss (self); + + g_clear_object (&priv->settings); +-- +2.23.0 + diff --git a/SOURCES/0001-subman-Add-InstalledProducts-dbus-property-for-g-c-c.patch b/SOURCES/0001-subman-Add-InstalledProducts-dbus-property-for-g-c-c.patch new file mode 100644 index 0000000..71b339b --- /dev/null +++ b/SOURCES/0001-subman-Add-InstalledProducts-dbus-property-for-g-c-c.patch @@ -0,0 +1,249 @@ +From ca35861a54b9f9413e4db8486a2786ba771a0271 Mon Sep 17 00:00:00 2001 +From: Kalev Lember +Date: Thu, 27 Jun 2019 16:12:00 +0200 +Subject: [PATCH] subman: Add InstalledProducts dbus property for g-c-c + +--- + plugins/subman/gsd-subscription-manager.c | 135 ++++++++++++++++++++++ + 1 file changed, 135 insertions(+) + +diff --git a/plugins/subman/gsd-subscription-manager.c b/plugins/subman/gsd-subscription-manager.c +index 08b13fa6..a8c18a26 100644 +--- a/plugins/subman/gsd-subscription-manager.c ++++ b/plugins/subman/gsd-subscription-manager.c +@@ -1,6 +1,7 @@ + /* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- + * + * Copyright (C) 2019 Richard Hughes ++ * Copyright (C) 2019 Kalev Lember + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by +@@ -44,6 +45,7 @@ static const gchar introspection_xml[] = + " " + " " + " " ++" " + " " + " " + ""; +@@ -72,6 +74,7 @@ struct GsdSubscriptionManagerPrivate + GDBusProxy *proxies[_RHSM_INTERFACE_LAST]; + const gchar *userlang; /* owned by GLib internally */ + GHashTable *config; /* str:str */ ++ GPtrArray *installed_products; + gchar *address; + + GTimer *timer_last_notified; +@@ -92,6 +95,32 @@ static void gsd_subscription_manager_finalize (GObject *objec + + G_DEFINE_TYPE (GsdSubscriptionManager, gsd_subscription_manager, G_TYPE_OBJECT) + ++typedef struct ++{ ++ gchar *product_name; ++ gchar *product_id; ++ gchar *version; ++ gchar *arch; ++ gchar *status; ++ gchar *starts; ++ gchar *ends; ++} ProductData; ++ ++static void ++product_data_free (ProductData *product) ++{ ++ g_free (product->product_name); ++ g_free (product->product_id); ++ g_free (product->version); ++ g_free (product->arch); ++ g_free (product->status); ++ g_free (product->starts); ++ g_free (product->ends); ++ g_free (product); ++} ++ ++G_DEFINE_AUTOPTR_CLEANUP_FUNC (ProductData, product_data_free); ++ + static gpointer manager_object = NULL; + + GQuark +@@ -120,6 +149,32 @@ _client_subscription_status_from_text (const gchar *status_txt) + return GSD_SUBMAN_SUBSCRIPTION_STATUS_UNKNOWN; + } + ++static GVariant * ++_make_installed_products_variant (GPtrArray *installed_products) ++{ ++ GVariantBuilder builder; ++ g_variant_builder_init (&builder, G_VARIANT_TYPE ("aa{sv}")); ++ ++ for (guint i = 0; i < installed_products->len; i++) { ++ ProductData *product = g_ptr_array_index (installed_products, i); ++ g_auto(GVariantDict) dict; ++ ++ g_variant_dict_init (&dict, NULL); ++ ++ g_variant_dict_insert (&dict, "product-name", "s", product->product_name); ++ g_variant_dict_insert (&dict, "product-id", "s", product->product_id); ++ g_variant_dict_insert (&dict, "version", "s", product->version); ++ g_variant_dict_insert (&dict, "arch", "s", product->arch); ++ g_variant_dict_insert (&dict, "status", "s", product->status); ++ g_variant_dict_insert (&dict, "starts", "s", product->starts); ++ g_variant_dict_insert (&dict, "ends", "s", product->ends); ++ ++ g_variant_builder_add_value (&builder, g_variant_dict_end (&dict)); ++ } ++ ++ return g_variant_builder_end (&builder); ++} ++ + static void + _emit_property_changed (GsdSubscriptionManager *manager, + const gchar *property_name, +@@ -154,6 +209,69 @@ _emit_property_changed (GsdSubscriptionManager *manager, + g_variant_builder_clear (&invalidated_builder); + } + ++static gboolean ++_client_installed_products_update (GsdSubscriptionManager *manager, GError **error) ++{ ++ GsdSubscriptionManagerPrivate *priv = manager->priv; ++ JsonNode *json_root; ++ JsonArray *json_products_array; ++ const gchar *json_txt = NULL; ++ g_autoptr(GVariant) val = NULL; ++ g_autoptr(JsonParser) json_parser = json_parser_new (); ++ ++ val = g_dbus_proxy_call_sync (priv->proxies[_RHSM_INTERFACE_PRODUCTS], ++ "ListInstalledProducts", ++ g_variant_new ("(sa{sv}s)", ++ "" /* filter_string */, ++ NULL /* proxy_options */, ++ priv->userlang), ++ G_DBUS_CALL_FLAGS_NONE, ++ -1, NULL, error); ++ if (val == NULL) ++ return FALSE; ++ g_variant_get (val, "(&s)", &json_txt); ++ g_debug ("Products.ListInstalledProducts JSON: %s", json_txt); ++ if (!json_parser_load_from_data (json_parser, json_txt, -1, error)) ++ return FALSE; ++ json_root = json_parser_get_root (json_parser); ++ json_products_array = json_node_get_array (json_root); ++ if (json_products_array == NULL) { ++ g_set_error (error, G_IO_ERROR, G_IO_ERROR_INVALID_DATA, ++ "no InstalledProducts array in %s", json_txt); ++ return FALSE; ++ } ++ ++ g_ptr_array_set_size (priv->installed_products, 0); ++ ++ for (guint i = 0; i < json_array_get_length (json_products_array); i++) { ++ JsonArray *json_product = json_array_get_array_element (json_products_array, i); ++ g_autoptr(ProductData) product = g_new0 (ProductData, 1); ++ ++ if (json_product == NULL) ++ continue; ++ if (json_array_get_length (json_product) < 8) { ++ g_debug ("Unexpected number of array elements in InstalledProducts JSON"); ++ continue; ++ } ++ ++ product->product_name = g_strdup (json_array_get_string_element (json_product, 0)); ++ product->product_id = g_strdup (json_array_get_string_element (json_product, 1)); ++ product->version = g_strdup (json_array_get_string_element (json_product, 2)); ++ product->arch = g_strdup (json_array_get_string_element (json_product, 3)); ++ product->status = g_strdup (json_array_get_string_element (json_product, 4)); ++ product->starts = g_strdup (json_array_get_string_element (json_product, 6)); ++ product->ends = g_strdup (json_array_get_string_element (json_product, 7)); ++ ++ g_ptr_array_add (priv->installed_products, g_steal_pointer (&product)); ++ } ++ ++ /* emit notification for g-c-c */ ++ _emit_property_changed (manager, "InstalledProducts", ++ _make_installed_products_variant (priv->installed_products)); ++ ++ return TRUE; ++} ++ + static gboolean + _client_subscription_status_update (GsdSubscriptionManager *manager, GError **error) + { +@@ -450,6 +568,8 @@ _client_register_with_keys (GsdSubscriptionManager *manager, + return FALSE; + if (!_client_subscription_status_update (manager, error)) + return FALSE; ++ if (!_client_installed_products_update (manager, error)) ++ return FALSE; + _client_maybe__show_notification (manager); + + /* success */ +@@ -497,6 +617,8 @@ _client_register (GsdSubscriptionManager *manager, + return FALSE; + if (!_client_subscription_status_update (manager, error)) + return FALSE; ++ if (!_client_installed_products_update (manager, error)) ++ return FALSE; + _client_maybe__show_notification (manager); + return TRUE; + } +@@ -523,6 +645,8 @@ _client_unregister (GsdSubscriptionManager *manager, GError **error) + return FALSE; + if (!_client_subscription_status_update (manager, error)) + return FALSE; ++ if (!_client_installed_products_update (manager, error)) ++ return FALSE; + _client_maybe__show_notification (manager); + return TRUE; + } +@@ -575,6 +699,10 @@ _subman_proxy_signal_cb (GDBusProxy *proxy, + g_warning ("failed to update subscription status: %s", error->message); + g_clear_error (&error); + } ++ if (!_client_installed_products_update (manager, &error)) { ++ g_warning ("failed to update installed products: %s", error->message); ++ g_clear_error (&error); ++ } + _client_maybe__show_notification (manager); + } + +@@ -640,6 +768,8 @@ _client_load (GsdSubscriptionManager *manager, GError **error) + return FALSE; + if (!_client_subscription_status_update (manager, error)) + return FALSE; ++ if (!_client_installed_products_update (manager, error)) ++ return FALSE; + if (!_client_syspurpose_update (manager, error)) + return FALSE; + +@@ -703,6 +833,7 @@ gsd_subscription_manager_init (GsdSubscriptionManager *manager) + { + GsdSubscriptionManagerPrivate *priv = manager->priv = GSD_SUBSCRIPTION_MANAGER_GET_PRIVATE (manager); + ++ priv->installed_products = g_ptr_array_new_with_free_func ((GDestroyNotify) product_data_free); + priv->timer_last_notified = g_timer_new (); + + /* expired */ +@@ -767,6 +898,7 @@ gsd_subscription_manager_finalize (GObject *object) + g_clear_object (&manager->priv->bus_cancellable); + } + ++ g_clear_pointer (&manager->priv->installed_products, g_ptr_array_unref); + g_clear_pointer (&manager->priv->introspection_data, g_dbus_node_info_unref); + g_clear_object (&manager->priv->connection); + g_clear_object (&manager->priv->notification_expired); +@@ -884,6 +1016,9 @@ handle_get_property (GDBusConnection *connection, + if (g_strcmp0 (property_name, "SubscriptionStatus") == 0) + return g_variant_new_uint32 (priv->subscription_status); + ++ if (g_strcmp0 (property_name, "InstalledProducts") == 0) ++ return _make_installed_products_variant (priv->installed_products); ++ + g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_FAILED, + "Failed to get property: %s", property_name); + return NULL; +-- +2.21.0 + diff --git a/SOURCES/0001-subman-Add-a-new-plugin-to-provide-system-subscripti.patch b/SOURCES/0001-subman-Add-a-new-plugin-to-provide-system-subscripti.patch index fafdddc..502aa9f 100644 --- a/SOURCES/0001-subman-Add-a-new-plugin-to-provide-system-subscripti.patch +++ b/SOURCES/0001-subman-Add-a-new-plugin-to-provide-system-subscripti.patch @@ -1743,3 +1743,198 @@ diff -urNp gnome-settings-daemon-3.32.0.old/plugins/subman/README.md gnome-setti +================= + +Proxy servers are not supported, nor are custom host ports or prefixes. +From b35d9c75a7d9f51b24b86461a16dde323be91c2b Mon Sep 17 00:00:00 2001 +From: Richard Hughes +Date: Thu, 20 Jun 2019 15:14:29 +0100 +Subject: [PATCH 1/2] f + +--- + plugins/subman/gsd-subscription-manager.c | 98 ++++++++++------------- + 1 file changed, 41 insertions(+), 57 deletions(-) + +diff --git a/plugins/subman/gsd-subscription-manager.c b/plugins/subman/gsd-subscription-manager.c +index 0f6466f8..37e53ed9 100644 +--- a/plugins/subman/gsd-subscription-manager.c ++++ b/plugins/subman/gsd-subscription-manager.c +@@ -74,7 +74,6 @@ struct GsdSubscriptionManagerPrivate + GHashTable *config; /* str:str */ + gchar *address; + +- guint check_registration_timeout_id; + GTimer *timer_last_notified; + NotifyNotification *notification_expired; + NotifyNotification *notification_registered; +@@ -121,6 +120,40 @@ _client_subscription_status_from_text (const gchar *status_txt) + return GSD_SUBMAN_SUBSCRIPTION_STATUS_UNKNOWN; + } + ++static void ++_emit_property_changed (GsdSubscriptionManager *manager, ++ const gchar *property_name, ++ GVariant *property_value) ++{ ++ GsdSubscriptionManagerPrivate *priv = manager->priv; ++ GVariantBuilder builder; ++ GVariantBuilder invalidated_builder; ++ ++ /* not yet connected */ ++ if (priv->connection == NULL) ++ return; ++ ++ /* build the dict */ ++ g_variant_builder_init (&invalidated_builder, G_VARIANT_TYPE ("as")); ++ g_variant_builder_init (&builder, G_VARIANT_TYPE_ARRAY); ++ g_variant_builder_add (&builder, ++ "{sv}", ++ property_name, ++ property_value); ++ g_dbus_connection_emit_signal (priv->connection, ++ NULL, ++ GSD_SUBSCRIPTION_DBUS_PATH, ++ "org.freedesktop.DBus.Properties", ++ "PropertiesChanged", ++ g_variant_new ("(sa{sv}as)", ++ GSD_SUBSCRIPTION_DBUS_INTERFACE, ++ &builder, ++ &invalidated_builder), ++ NULL); ++ g_variant_builder_clear (&builder); ++ g_variant_builder_clear (&invalidated_builder); ++} ++ + static gboolean + _client_subscription_status_update (GsdSubscriptionManager *manager, GError **error) + { +@@ -159,6 +192,13 @@ _client_subscription_status_update (GsdSubscriptionManager *manager, GError **er + status_txt = json_object_get_string_member (json_obj, "status"); + g_debug ("Entitlement.GetStatus: %s", status_txt); + priv->subscription_status = _client_subscription_status_from_text (status_txt); ++ ++ /* enit notification for g-c-c */ ++ if (priv->subscription_status != priv->subscription_status_last) { ++ _emit_property_changed (manager, "SubscriptionStatus", ++ g_variant_new_uint32 (priv->subscription_status)); ++ } ++ + return TRUE; + } + +@@ -635,40 +675,6 @@ gsd_subscription_manager_class_init (GsdSubscriptionManagerClass *klass) + g_type_class_add_private (klass, sizeof (GsdSubscriptionManagerPrivate)); + } + +-static void +-emit_property_changed (GsdSubscriptionManager *manager, +- const gchar *property_name, +- GVariant *property_value) +-{ +- GsdSubscriptionManagerPrivate *priv = manager->priv; +- GVariantBuilder builder; +- GVariantBuilder invalidated_builder; +- +- /* not yet connected */ +- if (priv->connection == NULL) +- return; +- +- /* build the dict */ +- g_variant_builder_init (&invalidated_builder, G_VARIANT_TYPE ("as")); +- g_variant_builder_init (&builder, G_VARIANT_TYPE_ARRAY); +- g_variant_builder_add (&builder, +- "{sv}", +- property_name, +- property_value); +- g_dbus_connection_emit_signal (priv->connection, +- NULL, +- GSD_SUBSCRIPTION_DBUS_PATH, +- "org.freedesktop.DBus.Properties", +- "PropertiesChanged", +- g_variant_new ("(sa{sv}as)", +- GSD_SUBSCRIPTION_DBUS_INTERFACE, +- &builder, +- &invalidated_builder), +- NULL); +- g_variant_builder_clear (&builder); +- g_variant_builder_clear (&invalidated_builder); +-} +- + static void + _launch_info_overview (void) + { +@@ -772,25 +778,9 @@ gsd_subscription_manager_finalize (GObject *object) + manager->priv->name_id = 0; + } + +- if (manager->priv->check_registration_timeout_id) +- g_source_remove (manager->priv->check_registration_timeout_id); +- + G_OBJECT_CLASS (gsd_subscription_manager_parent_class)->finalize (object); + } + +-static gboolean +-nlight_forced_timeout_cb (gpointer user_data) +-{ +- GsdSubscriptionManager *manager = GSD_SUBSCRIPTION_MANAGER (user_data); +- GsdSubscriptionManagerPrivate *priv = manager->priv; +- +- priv->check_registration_timeout_id = 0; +- emit_property_changed (manager, "SubscriptionStatus", +- g_variant_new_boolean (TRUE)); +- +- return G_SOURCE_REMOVE; +-} +- + static void + handle_method_call (GDBusConnection *connection, + const gchar *sender, +@@ -802,11 +792,9 @@ handle_method_call (GDBusConnection *connection, + gpointer user_data) + { + GsdSubscriptionManager *manager = GSD_SUBSCRIPTION_MANAGER (user_data); +- GsdSubscriptionManagerPrivate *priv = manager->priv; + g_autoptr(GError) error = NULL; + + if (g_strcmp0 (method_name, "Register") == 0) { +- guint32 duration = 0; + const gchar *organisation = NULL; + const gchar *hostname = NULL; + +@@ -864,10 +852,6 @@ handle_method_call (GDBusConnection *connection, + + return; + } +- if (priv->check_registration_timeout_id) +- g_source_remove (priv->check_registration_timeout_id); +- priv->check_registration_timeout_id = g_timeout_add_seconds (duration, nlight_forced_timeout_cb, manager); +- + g_dbus_method_invocation_return_value (invocation, NULL); + } else if (g_strcmp0 (method_name, "Unregister") == 0) { + if (!_client_unregister (manager, &error)) { +-- +2.21.0 + + +From 3635202b7039cac15c258674e2170622ed0d5a42 Mon Sep 17 00:00:00 2001 +From: Kalev Lember +Date: Tue, 25 Jun 2019 14:12:04 +0200 +Subject: [PATCH 2/2] subman: trivial: Fix typo + +--- + plugins/subman/gsd-subscription-manager.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/plugins/subman/gsd-subscription-manager.c b/plugins/subman/gsd-subscription-manager.c +index 37e53ed9..08b13fa6 100644 +--- a/plugins/subman/gsd-subscription-manager.c ++++ b/plugins/subman/gsd-subscription-manager.c +@@ -193,7 +193,7 @@ _client_subscription_status_update (GsdSubscriptionManager *manager, GError **er + g_debug ("Entitlement.GetStatus: %s", status_txt); + priv->subscription_status = _client_subscription_status_from_text (status_txt); + +- /* enit notification for g-c-c */ ++ /* emit notification for g-c-c */ + if (priv->subscription_status != priv->subscription_status_last) { + _emit_property_changed (manager, "SubscriptionStatus", + g_variant_new_uint32 (priv->subscription_status)); +-- +2.21.0 + diff --git a/SOURCES/0001-subman-Increase-RHSM-dbus-call-timeouts.patch b/SOURCES/0001-subman-Increase-RHSM-dbus-call-timeouts.patch new file mode 100644 index 0000000..09ac272 --- /dev/null +++ b/SOURCES/0001-subman-Increase-RHSM-dbus-call-timeouts.patch @@ -0,0 +1,77 @@ +From 298355d8b3d5a85b99e74a06e936a0113797bf2a Mon Sep 17 00:00:00 2001 +From: Kalev Lember +Date: Fri, 28 Jun 2019 18:10:36 +0200 +Subject: [PATCH] subman: Increase RHSM dbus call timeouts + +Increase the dbus timeouts to 5 minutes as the register/unregister calls +seem to routinely take more than a minute. +--- + plugins/subman/gsd-subman-helper.c | 17 ++++++++++++----- + 1 file changed, 12 insertions(+), 5 deletions(-) + +diff --git a/plugins/subman/gsd-subman-helper.c b/plugins/subman/gsd-subman-helper.c +index 182f7190..af7a82e9 100644 +--- a/plugins/subman/gsd-subman-helper.c ++++ b/plugins/subman/gsd-subman-helper.c +@@ -28,6 +28,8 @@ + #include + #include + ++#define DBUS_TIMEOUT 300000 /* 5 minutes */ ++ + static void + _helper_convert_error (const gchar *json_txt, GError **error) + { +@@ -94,7 +96,8 @@ _helper_unregister (GError **error) + proxy_options, + ""), /* lang */ + G_DBUS_CALL_FLAGS_NONE, +- -1, NULL, error); ++ DBUS_TIMEOUT, ++ NULL, error); + return res != NULL; + } + +@@ -127,7 +130,8 @@ _helper_auto_attach (GError **error) + proxy_options, + ""), /* lang */ + G_DBUS_CALL_FLAGS_NONE, +- -1, NULL, error); ++ DBUS_TIMEOUT, ++ NULL, error); + if (res == NULL) + return FALSE; + g_variant_get (res, "(&s)", &str); +@@ -158,7 +162,8 @@ _helper_save_config (const gchar *key, const gchar *value, GError **error) + g_variant_new_string (value), + ""), /* lang */ + G_DBUS_CALL_FLAGS_NONE, +- -1, NULL, error); ++ DBUS_TIMEOUT, ++ NULL, error); + return res != NULL; + } + +@@ -305,7 +310,8 @@ main (int argc, char *argv[]) + subman_conopts, + userlang), + G_DBUS_CALL_FLAGS_NO_AUTO_START, +- -1, NULL, &error_local); ++ DBUS_TIMEOUT, ++ NULL, &error_local); + if (res == NULL) { + g_dbus_error_strip_remote_error (error_local); + _helper_convert_error (error_local->message, &error); +@@ -339,7 +345,8 @@ main (int argc, char *argv[]) + subman_conopts, + userlang), + G_DBUS_CALL_FLAGS_NO_AUTO_START, +- -1, NULL, &error_local); ++ DBUS_TIMEOUT, ++ NULL, &error_local); + if (res == NULL) { + g_dbus_error_strip_remote_error (error_local); + _helper_convert_error (error_local->message, &error); +-- +2.21.0 + diff --git a/SOURCES/0001-xsettings-Add-an-entry-for-the-overlay-scrolling-set.patch b/SOURCES/0001-xsettings-Add-an-entry-for-the-overlay-scrolling-set.patch new file mode 100644 index 0000000..0ec6921 --- /dev/null +++ b/SOURCES/0001-xsettings-Add-an-entry-for-the-overlay-scrolling-set.patch @@ -0,0 +1,25 @@ +From 6e790966c2b6e1db8dd2c145119d3fdd19e0c18f Mon Sep 17 00:00:00 2001 +From: Matthias Clasen +Date: Wed, 22 May 2019 16:04:42 -0400 +Subject: [PATCH] xsettings: Add an entry for the overlay scrolling setting + +This will be used by GTK. +--- + plugins/xsettings/gsd-xsettings-manager.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/plugins/xsettings/gsd-xsettings-manager.c b/plugins/xsettings/gsd-xsettings-manager.c +index c3ac7892..4164de40 100644 +--- a/plugins/xsettings/gsd-xsettings-manager.c ++++ b/plugins/xsettings/gsd-xsettings-manager.c +@@ -478,6 +478,7 @@ static TranslationEntry translations [] = { + { "org.gnome.desktop.interface", "icon-theme", "Net/IconThemeName", translate_string_string }, + { "org.gnome.desktop.interface", "cursor-theme", "Gtk/CursorThemeName", translate_string_string }, + { "org.gnome.desktop.interface", "gtk-enable-primary-paste", "Gtk/EnablePrimaryPaste", translate_bool_int }, ++ { "org.gnome.desktop.interface", "overlay-scrolling", "Gtk/OverlayScrolling", translate_bool_int }, + /* cursor-size is handled via the Xft side as it needs the scaling factor */ + + { "org.gnome.desktop.sound", "theme-name", "Net/SoundThemeName", translate_string_string }, +-- +2.23.0 + diff --git a/SPECS/gnome-settings-daemon.spec b/SPECS/gnome-settings-daemon.spec index c43c325..8eaa46f 100644 --- a/SPECS/gnome-settings-daemon.spec +++ b/SPECS/gnome-settings-daemon.spec @@ -1,14 +1,14 @@ %global glib2_version 2.56 %global geocode_glib_version 3.10.0 %global gnome_desktop_version 3.27.90 -%global gsettings_desktop_schemas_version 3.27.90 +%global gsettings_desktop_schemas_version 3.32.0-4 %global gtk3_version 3.15.3 %global libgweather_version 3.9.5 %global geoclue_version 2.3.1 Name: gnome-settings-daemon Version: 3.32.0 -Release: 3%{?dist} +Release: 9%{?dist} Summary: The daemon sharing settings from GNOME to GTK+/KDE applications License: GPLv2+ @@ -80,10 +80,15 @@ Patch00001: 0001-account-first-cut-at-account-plugin.patch Patch00002: 0002-account-reshow-the-notification-when-screen-unlocks.patch Patch00003: 0003-account-display-nag-screen-periodically.patch Patch00004: 0004-account-don-t-poll-more-frequently-than-notification.patch +Patch00005: 0001-smartcard-Cancel-cancellable-when-stopping.patch +Patch00006: 0001-xsettings-Add-an-entry-for-the-overlay-scrolling-set.patch Patch10001: 0001-housekeeping-Add-a-GPU-memory-usage-notification.patch +# Subscription manager integration Patch10002: 0001-subman-Add-a-new-plugin-to-provide-system-subscripti.patch +Patch10003: 0001-subman-Add-InstalledProducts-dbus-property-for-g-c-c.patch +Patch10004: 0001-subman-Increase-RHSM-dbus-call-timeouts.patch %description A daemon to share settings from GNOME to other applications. It also @@ -215,6 +220,32 @@ mkdir $RPM_BUILD_ROOT%{_libdir}/gnome-settings-daemon-3.0/gtk-modules %{_libdir}/pkgconfig/gnome-settings-daemon.pc %changelog +* Fri Nov 22 2019 Benjamin Otte - 3.32.0-9 +- Update gsettings-deskto-schemas dependency for new setting + Resolves: #1775683, #1723462 + +* Thu Nov 21 2019 Benjamin Otte - 3.32.0-8 +- Add upstream setting for overlay scrolling + Resolves: #1723462 + +* Mon Nov 18 2019 Kalev Lember - 3.32.0-7 +- Add a new plugin to provide system subscription information +- Resolves: #1720249 + +* Mon Nov 04 2019 Marek Kasik - 3.32.0-6 +- Initialize a variable from previous commit. +- Previous commit made it possible to use uninitialized variable. +- Detected by Coverity. +- Related: #1742710 + +* Mon Nov 04 2019 Marek Kasik - 3.32.0-5 +- Cancel cancellable when stopping smartcard plugin to avoid crash +- Resolves: #1742710 + +* Tue Jul 09 2019 Richard Hughes - 3.32.0-4 +- Remove the subman plugin -- move to a 8.2 feature instead. +- Resolves: #1720249 + * Mon Jun 17 2019 Richard Hughes - 3.32.0-3 - Add a new plugin to provide system subscription information - Resolves: #1720249