Improve cache rendering

This commit is contained in:
alonso.torres
2025-11-20 15:34:28 +01:00
parent 0120a5335b
commit c2026918a4
6 changed files with 69 additions and 22 deletions

View File

@@ -159,6 +159,8 @@
(get base-objects parent-id)))))
zoom (d/check-num zoom 1)
prev-zoom (mf/use-ref zoom)
drawing-tool (:tool drawing)
drawing-obj (:object drawing)
@@ -334,7 +336,8 @@
(mf/with-effect [vbox zoom]
(when (and @canvas-init? initialized?)
(wasm.api/set-view-box zoom vbox)))
(wasm.api/set-view-box (mf/ref-val prev-zoom) zoom vbox))
(mf/set-ref-val! prev-zoom zoom))
(mf/with-effect [background]
(when (and @canvas-init? initialized?)

View File

@@ -111,12 +111,6 @@
(aget buffer 3))
(set! wasm/internal-frame-id nil))))
(def set-view-render
(fns/debounce
(fn [ts]
(h/call wasm/internal-module "_set_view_end")
(render ts))
200))
(defonce pending-render (atom false))
@@ -866,10 +860,24 @@
(:y position))]
(= result 1)))
(def render-finish
(letfn [(do-render [ts]
(h/call wasm/internal-module "_set_view_end")
(render ts))]
(fns/debounce do-render 100)))
(def render-pan
(fns/throttle render 10))
(defn set-view-box
[zoom vbox]
[prev-zoom zoom vbox]
(h/call wasm/internal-module "_set_view" zoom (- (:x vbox)) (- (:y vbox)))
(set-view-render))
(if (mth/close? prev-zoom zoom)
(do (render-pan)
(render-finish))
(do (h/call wasm/internal-module "_render_from_cache" 0)
(render-finish))))
(defn set-object
[objects shape]