mirror of
https://github.com/penpot/penpot.git
synced 2025-12-11 22:14:05 +01:00
✨ Improve cache rendering
This commit is contained in:
@@ -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?)
|
||||
|
||||
@@ -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]
|
||||
|
||||
Reference in New Issue
Block a user