Resolves: #2009063 (Correct update notifications)
This commit is contained in:
parent
0537bfe484
commit
a63a7bde16
116
0002-correct-update-notifications.patch
Normal file
116
0002-correct-update-notifications.patch
Normal file
@ -0,0 +1,116 @@
|
||||
From 1b0c476d66f89332187da2894b06ec2d4b83fa2a Mon Sep 17 00:00:00 2001
|
||||
From: Milan Crha <mcrha@redhat.com>
|
||||
Date: Thu, 30 Sep 2021 16:28:11 +0200
|
||||
Subject: [PATCH 1/2] gs-update-monitor: Use wall-clock time for
|
||||
one-notification-per-day check
|
||||
|
||||
Instead of using the g_timeout_add_seconds(), which uses a monotonic time,
|
||||
which may or may not increase when the machine is suspended, rather use
|
||||
the wall-clock time, to avoid issues with machine suspend where the monotonic
|
||||
time does not increase.
|
||||
---
|
||||
src/gs-update-monitor.c | 31 +++++++++++++------------------
|
||||
1 file changed, 13 insertions(+), 18 deletions(-)
|
||||
|
||||
diff --git a/src/gs-update-monitor.c b/src/gs-update-monitor.c
|
||||
index bde39fbbb..787c605a1 100644
|
||||
--- a/src/gs-update-monitor.c
|
||||
+++ b/src/gs-update-monitor.c
|
||||
@@ -44,7 +44,8 @@ struct _GsUpdateMonitor {
|
||||
guint check_startup_id; /* 60s after startup */
|
||||
guint check_hourly_id; /* and then every hour */
|
||||
guint check_daily_id; /* every 3rd day */
|
||||
- guint notification_blocked_id; /* rate limit notifications */
|
||||
+
|
||||
+ gint64 last_notification_time_usec; /* to notify once per day only */
|
||||
};
|
||||
|
||||
G_DEFINE_TYPE (GsUpdateMonitor, gs_update_monitor, G_TYPE_OBJECT)
|
||||
@@ -88,14 +89,6 @@ with_app_data_free (WithAppData *data)
|
||||
|
||||
G_DEFINE_AUTOPTR_CLEANUP_FUNC(WithAppData, with_app_data_free);
|
||||
|
||||
-static gboolean
|
||||
-reenable_offline_update_notification (gpointer data)
|
||||
-{
|
||||
- GsUpdateMonitor *monitor = data;
|
||||
- monitor->notification_blocked_id = 0;
|
||||
- return G_SOURCE_REMOVE;
|
||||
-}
|
||||
-
|
||||
static void
|
||||
check_updates_kind (GsAppList *apps,
|
||||
gboolean *out_has_important,
|
||||
@@ -265,16 +258,22 @@ notify_about_pending_updates (GsUpdateMonitor *monitor,
|
||||
GsAppList *apps)
|
||||
{
|
||||
const gchar *title = NULL, *body = NULL;
|
||||
+ gint64 time_diff_sec;
|
||||
g_autoptr(GNotification) nn = NULL;
|
||||
|
||||
- if (monitor->notification_blocked_id > 0)
|
||||
+ time_diff_sec = (g_get_real_time () - monitor->last_notification_time_usec) / G_USEC_PER_SEC;
|
||||
+ if (time_diff_sec < SECONDS_IN_A_DAY) {
|
||||
+ g_debug ("Skipping update notification daily check, because made one only %" G_GINT64_FORMAT "s ago",
|
||||
+ time_diff_sec);
|
||||
return;
|
||||
+ }
|
||||
|
||||
- /* rate limit update notifications to once per day */
|
||||
- monitor->notification_blocked_id = g_timeout_add_seconds (24 * SECONDS_IN_AN_HOUR, reenable_offline_update_notification, monitor);
|
||||
-
|
||||
- if (!should_notify_about_pending_updates (monitor, apps, &title, &body))
|
||||
+ if (!should_notify_about_pending_updates (monitor, apps, &title, &body)) {
|
||||
+ g_debug ("No update notification needed");
|
||||
return;
|
||||
+ }
|
||||
+
|
||||
+ monitor->last_notification_time_usec = g_get_real_time ();
|
||||
|
||||
g_debug ("Notify about update: '%s'", title);
|
||||
|
||||
@@ -1394,10 +1393,6 @@ gs_update_monitor_dispose (GObject *object)
|
||||
g_source_remove (monitor->check_startup_id);
|
||||
monitor->check_startup_id = 0;
|
||||
}
|
||||
- if (monitor->notification_blocked_id != 0) {
|
||||
- g_source_remove (monitor->notification_blocked_id);
|
||||
- monitor->notification_blocked_id = 0;
|
||||
- }
|
||||
if (monitor->cleanup_notifications_id != 0) {
|
||||
g_source_remove (monitor->cleanup_notifications_id);
|
||||
monitor->cleanup_notifications_id = 0;
|
||||
--
|
||||
GitLab
|
||||
|
||||
|
||||
From 2ff332826f841c4ea1d9458df81648868745ea41 Mon Sep 17 00:00:00 2001
|
||||
From: Milan Crha <mcrha@redhat.com>
|
||||
Date: Thu, 30 Sep 2021 16:47:40 +0200
|
||||
Subject: [PATCH 2/2] gs-update-monitor: Correct last notification timestamp
|
||||
reset
|
||||
|
||||
Do not reset the notification timestamp after the list of updates
|
||||
is received, that should be done when the notification had been shown.
|
||||
|
||||
Reported downstream at:
|
||||
https://bugzilla.redhat.com/show_bug.cgi?id=2009063
|
||||
---
|
||||
src/gs-update-monitor.c | 1 -
|
||||
1 file changed, 1 deletion(-)
|
||||
|
||||
diff --git a/src/gs-update-monitor.c b/src/gs-update-monitor.c
|
||||
index 787c605a1..a8421fcc4 100644
|
||||
--- a/src/gs-update-monitor.c
|
||||
+++ b/src/gs-update-monitor.c
|
||||
@@ -613,7 +613,6 @@ get_updates_finished_cb (GObject *object, GAsyncResult *res, gpointer data)
|
||||
notify_list = apps;
|
||||
|
||||
notify_about_pending_updates (monitor, notify_list);
|
||||
- reset_update_notification_timestamp (monitor);
|
||||
}
|
||||
}
|
||||
|
||||
--
|
||||
GitLab
|
||||
|
@ -12,7 +12,7 @@
|
||||
|
||||
Name: gnome-software
|
||||
Version: 41.0
|
||||
Release: 1%{?dist}
|
||||
Release: 2%{?dist}
|
||||
Summary: A software center for GNOME
|
||||
|
||||
License: GPLv2+
|
||||
@ -20,6 +20,7 @@ URL: https://wiki.gnome.org/Apps/Software
|
||||
Source0: https://download.gnome.org/sources/gnome-software/41/%{name}-%{tarball_version}.tar.xz
|
||||
|
||||
Patch01: 0001-crash-with-broken-theme.patch
|
||||
Patch02: 0002-correct-update-notifications.patch
|
||||
|
||||
BuildRequires: appstream-devel >= %{appstream_version}
|
||||
BuildRequires: gcc
|
||||
@ -202,6 +203,9 @@ desktop-file-validate %{buildroot}%{_datadir}/applications/*.desktop
|
||||
%{_datadir}/gtk-doc/html/gnome-software
|
||||
|
||||
%changelog
|
||||
* Mon Oct 04 2021 Milan Crha <mcrha@redhat.com> - 41.0-2
|
||||
- Resolves: #2009063 (Correct update notifications)
|
||||
|
||||
* Mon Sep 20 2021 Milan Crha <mcrha@redhat.com> - 41.0-1
|
||||
- Update to 41.0
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user