GNOME Bugzilla – Bug 747636
Follow-up chat notifications sometimes stop working after closing a notification
Last modified: 2015-04-13 13:42:12 UTC
See patches. This happens if the shell only observes a channel when the notification is closed (for instance when the conversations has been initiated in empathy/polari by the user herself rather than the "other side").
Created attachment 301302 [details] [review] telepathyClient: Disentangle source and notification Currently the lifetime of a chat source and its single notification are tied together. While this apparently makes sense, it means we will loose all follow-up notifications when a source is destroyed with the corresponding telepathy channel left open. We will fix this soon by tying the source to the channel's lifetime rather than the notification, prepare for this by recreating the notification if necessary.
Created attachment 301303 [details] [review] telepathyClient: Keep source alive while channel is open Sources are destroyed with their last notification. This is usually the correct behavior, however in case of chat sources, the corresponding telepathy channel might still be open, and any further messages that should trigger a notification are lost because chat sources are only created when telepathy's channel dispatcher notifies us about a channel (via ObserveChannels). Loosing messages like this is unexpected, so keep chat sources around even without notifications while the channel is open.
Review of attachment 301303 [details] [review]: code looks fine s/Loosing/Losing/
Review of attachment 301302 [details] [review]: Didn't you miss an _ensureNotification() in createBanner() ? s/loose/lose/ in the commit msg
(In reply to Rui Matos from comment #4) > Didn't you miss an _ensureNotification() in createBanner() ? createBanner() is called when a notification is about to be displayed, so the notification must be there already.
Review of attachment 301302 [details] [review]: (In reply to Florian Müllner from comment #5) > (In reply to Rui Matos from comment #4) > > Didn't you miss an _ensureNotification() in createBanner() ? > > createBanner() is called when a notification is about to be displayed, so > the notification must be there already. Ok, fair enough
Attachment 301302 [details] pushed as 265b1f0 - telepathyClient: Disentangle source and notification Attachment 301303 [details] pushed as a0868ba - telepathyClient: Keep source alive while channel is open