branch: externals/ement commit c9bcea589534e2d4e2301a080f6bef6d2df208e4 Author: Adam Porter <a...@alphapapa.net> Commit: Adam Porter <a...@alphapapa.net>
Fix: (ement-read-receipt-idle-timer) Could be duplicated Fixes #196. Reported-by: Phil Sainty <p...@catalyst.net.nz> --- README.org | 3 +++ ement.el | 10 ++++++---- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/README.org b/README.org index a6b6ec41ae..b92960332e 100644 --- a/README.org +++ b/README.org @@ -316,6 +316,9 @@ Note that, while ~matrix-client~ remains usable, and probably will for some time + Command ~ement-room-list-next-unread~ could enter an infinite loop. (Thanks to [[https://github.com/vizs][Visuwesh]] and ~@mrtnmrtn:matrix.org~.) + Events in notifications buffer could appear out-of-order. ([[https://github.com/alphapapa/ement.el/issues/191][#191]]. Thanks to [[https://github.com/phil-s][Phil Sainty]].) +*Internal* ++ The ~ement-read-receipt-idle-timer~ could be duplicated when using multiple sessions. ([[https://github.com/alphapapa/ement.el/issues/196][#196]]. Thanks to [[https://github.com/phil-s][Phil Sainty]].) + ** 0.10 *Security Fixes* diff --git a/ement.el b/ement.el index 52d3d28b31..9288470eb1 100644 --- a/ement.el +++ b/ement.el @@ -401,14 +401,16 @@ Useful in, e.g. `ement-disconnect-hook', which see." "Run idle timer that updates read receipts. To be called from `ement-after-initial-sync-hook'. Timer is stored in `ement-read-receipt-idle-timer'." - (setf ement-read-receipt-idle-timer (run-with-idle-timer 3 t #'ement-room-read-receipt-idle-timer))) + (unless (timerp ement-read-receipt-idle-timer) + (setf ement-read-receipt-idle-timer (run-with-idle-timer 3 t #'ement-room-read-receipt-idle-timer)))) (defun ement--stop-idle-timer (&rest _ignore) "Stop idle timer stored in `ement-read-receipt-idle-timer'. To be called from `ement-disconnect-hook'." - (when (timerp ement-read-receipt-idle-timer) - (cancel-timer ement-read-receipt-idle-timer) - (setf ement-read-receipt-idle-timer nil))) + (unless ement-sessions + (when (timerp ement-read-receipt-idle-timer) + (cancel-timer ement-read-receipt-idle-timer) + (setf ement-read-receipt-idle-timer nil)))) (defun ement-view-initial-rooms (session) "View rooms for SESSION configured in `ement-auto-view-rooms'."