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
|
Name: gnome-software
|
||||||
Version: 41.0
|
Version: 41.0
|
||||||
Release: 1%{?dist}
|
Release: 2%{?dist}
|
||||||
Summary: A software center for GNOME
|
Summary: A software center for GNOME
|
||||||
|
|
||||||
License: GPLv2+
|
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
|
Source0: https://download.gnome.org/sources/gnome-software/41/%{name}-%{tarball_version}.tar.xz
|
||||||
|
|
||||||
Patch01: 0001-crash-with-broken-theme.patch
|
Patch01: 0001-crash-with-broken-theme.patch
|
||||||
|
Patch02: 0002-correct-update-notifications.patch
|
||||||
|
|
||||||
BuildRequires: appstream-devel >= %{appstream_version}
|
BuildRequires: appstream-devel >= %{appstream_version}
|
||||||
BuildRequires: gcc
|
BuildRequires: gcc
|
||||||
@ -202,6 +203,9 @@ desktop-file-validate %{buildroot}%{_datadir}/applications/*.desktop
|
|||||||
%{_datadir}/gtk-doc/html/gnome-software
|
%{_datadir}/gtk-doc/html/gnome-software
|
||||||
|
|
||||||
%changelog
|
%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
|
* Mon Sep 20 2021 Milan Crha <mcrha@redhat.com> - 41.0-1
|
||||||
- Update to 41.0
|
- Update to 41.0
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user