messageTray: Ensure _updateDatetimeId idle callback is cancelled

If the idle callback is not explicitly removed when the notification is
destroyed, it may be invoked after destruction, and try to modify the
notification after it’s been freed.

Signed-off-by: Philip Withnall <pwithnall@gnome.org>
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3352>
(cherry picked from commit 8176d6b51c)
This commit is contained in:
Philip Withnall 2024-05-28 18:05:10 +01:00 committed by Florian Müllner
parent 0af05089fa
commit 39526f7665
No known key found for this signature in database

View file

@ -498,6 +498,11 @@ export const Notification = GObject.registerClass({
destroy(reason = NotificationDestroyedReason.DISMISSED) {
this.emit('destroy', reason);
if (this._updateDatetimeId)
GLib.source_remove(this._updateDatetimeId);
delete this._updateDatetimeId;
this.run_dispose();
}
});