limit how often the notes window updates presentation states
This commit is contained in:
		| @@ -244,6 +244,9 @@ | |||||||
|  |  | ||||||
| 				} | 				} | ||||||
|  |  | ||||||
|  | 				// Limit to max one state update per X ms | ||||||
|  | 				handleStateMessage = debounce( handleStateMessage, 200 ); | ||||||
|  |  | ||||||
| 				/** | 				/** | ||||||
| 				 * Creates the preview iframes. | 				 * 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> | 		</script> | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user