emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] externals/gcmh 12fd03c 24/32: Set the new timer for running once


From: Andrea Corallo
Subject: [elpa] externals/gcmh 12fd03c 24/32: Set the new timer for running once and on post-command-hook
Date: Mon, 16 Nov 2020 17:32:07 -0500 (EST)

branch: externals/gcmh
commit 12fd03c7c0915b2ae470e77e6600ad04f7f67dde
Author: Andrea Corallo <andrea.corallo@arm.com>
Commit: Andrea Corallo <andrea.corallo@arm.com>

    Set the new timer for running once and on post-command-hook
---
 gcmh.el | 21 ++++++++++++++-------
 1 file changed, 14 insertions(+), 7 deletions(-)

diff --git a/gcmh.el b/gcmh.el
index dd9f2a6..c81e698 100644
--- a/gcmh.el
+++ b/gcmh.el
@@ -72,6 +72,14 @@ cause OS paging."
 This is to be used with the `pre-command-hook'."
   (setq gc-cons-threshold gcmh-high-cons-threshold))
 
+(defun gcmh-register-idle-timer ()
+  "Register a timer to run `gcmh-idle-garbage-collect'.
+Cancel the previous one if present."
+  (when (timerp gcmh-idle-timer)
+    (cancel-timer gcmh-idle-timer))
+  (setf gcmh-idle-timer
+       (run-with-idle-timer gcmh-idle-delay nil #'gcmh-idle-garbage-collect)))
+
 (defun gcmh-idle-garbage-collect ()
   "Run garbage collection after `gcmh-idle-delay'."
   (if gcmh-verbose
@@ -96,15 +104,14 @@ This is to be used with the `pre-command-hook'."
     (cancel-timer gcmh-idle-timer))
   (if gcmh-mode
       (progn
-        (setq  gc-cons-threshold gcmh-high-cons-threshold
-               ;; When idle for gcmh-idle-delay, run the GC no matter what.
-               gcmh-idle-timer (run-with-idle-timer gcmh-idle-delay t
-                                                    
#'gcmh-idle-garbage-collect))
-        ;; Release severe GC strategy before the user restart to working
-        (add-hook 'pre-command-hook #'gcmh-set-high-threshold))
+        (setf gc-cons-threshold gcmh-high-cons-threshold)
+       ;; Release severe GC strategy before the user restart to working
+       (add-hook 'pre-command-hook #'gcmh-set-high-threshold)
+       (add-hook 'post-command-hook #'gcmh-register-idle-timer))
     (setq gc-cons-threshold gcmh-low-cons-threshold
           gcmh-idle-timer nil)
-    (remove-hook 'pre-command-hook #'gcmh-set-high-threshold)))
+    (remove-hook 'pre-command-hook #'gcmh-set-high-threshold)
+    (remove-hook 'post-command-hook #'gcmh-register-idle-timer)))
 
 (provide 'gcmh)
 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]