aboutsummaryrefslogtreecommitdiff
path: root/thirdparty/preact/src/render-queue.js
diff options
context:
space:
mode:
authortg(x) <*@tg-x.net>2016-10-05 00:02:10 +0200
committertg(x) <*@tg-x.net>2016-10-05 00:02:10 +0200
commitec62d29c90958aa8d41474ed2fe5a179d6fafed7 (patch)
tree367cc55bc6772cf194ed6c4778cd344d581d3d7c /thirdparty/preact/src/render-queue.js
parentfda241d74d5c1c39203b64da676c684d4dc9d800 (diff)
parentd3ccf4103900b8d990b1970d135695b938d94eae (diff)
Merge branch 'master' of taler.net:/var/git/wallet-webex
Diffstat (limited to 'thirdparty/preact/src/render-queue.js')
-rw-r--r--thirdparty/preact/src/render-queue.js23
1 files changed, 23 insertions, 0 deletions
diff --git a/thirdparty/preact/src/render-queue.js b/thirdparty/preact/src/render-queue.js
new file mode 100644
index 000000000..ff603611b
--- /dev/null
+++ b/thirdparty/preact/src/render-queue.js
@@ -0,0 +1,23 @@
+import options from './options';
+import { defer } from './util';
+import { renderComponent } from './vdom/component';
+
+/** Managed queue of dirty components to be re-rendered */
+
+// items/itemsOffline swap on each rerender() call (just a simple pool technique)
+let items = [];
+
+export function enqueueRender(component) {
+ if (!component._dirty && (component._dirty = true) && items.push(component)==1) {
+ (options.debounceRendering || defer)(rerender);
+ }
+}
+
+
+export function rerender() {
+ let p, list = items;
+ items = [];
+ while ( (p = list.pop()) ) {
+ if (p._dirty) renderComponent(p);
+ }
+}