From f396b9b8714fdcc191a66967a8d34b187ae8944a Mon Sep 17 00:00:00 2001
From: Hakim El Hattab <hakim.elhattab@gmail.com>
Date: Tue, 22 Apr 2014 14:50:50 +0200
Subject: [PATCH] limit how often the notes window updates presentation states

---
 plugin/notes/notes.html | 34 ++++++++++++++++++++++++++++++++++
 1 file changed, 34 insertions(+)

diff --git a/plugin/notes/notes.html b/plugin/notes/notes.html
index 2a3b2ba..9e9dfb5 100644
--- a/plugin/notes/notes.html
+++ b/plugin/notes/notes.html
@@ -244,6 +244,9 @@
 
 				}
 
+				// Limit to max one state update per X ms
+				handleStateMessage = debounce( handleStateMessage, 200 );
+
 				/**
 				 * Creates the preview iframes.
 				 */
@@ -340,6 +343,37 @@
 
 				}
 
+				/**
+				 * Limits the frequency at which a function can be called.
+				 */
+				function debounce( fn, ms ) {
+
+					var lastTime = 0,
+						timeout;
+
+					return function() {
+
+						var args = arguments;
+						var context = this;
+
+						clearTimeout( timeout );
+
+						var timeSinceLastCall = Date.now() - lastTime;
+						if( timeSinceLastCall > ms ) {
+							fn.apply( context, args );
+							lastTime = Date.now();
+						}
+						else {
+							timeout = setTimeout( function() {
+								fn.apply( context, args );
+								lastTime = Date.now();
+							}, ms - timeSinceLastCall );
+						}
+
+					}
+
+				}
+
 			})();
 
 		</script>
-- 
GitLab