0
Fork 0
mirror of https://github.com/penpot/penpot.git synced 2025-02-01 11:59:17 -05:00

Merge pull request #5615 from penpot/ladybenko-wasm-cleanup

🐛 Fix WebGL warning when switching pages
This commit is contained in:
Alejandro 2025-01-20 12:50:54 +01:00 committed by GitHub
commit 47294dbd65
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 15 additions and 8 deletions

View file

@ -460,11 +460,6 @@
:stencil true
:alpha true})
(defn clear-canvas
[]
;; TODO: perform corresponding cleaning
)
(defn resize-viewbox
[width height]
(h/call internal-module "_resize_viewbox" width height))
@ -488,10 +483,14 @@
;; Initialize Wasm Render Engine
(h/call internal-module "_init" (/ (.-width ^js canvas) dpr) (/ (.-height ^js canvas) dpr))
(h/call internal-module "_set_render_options" flags dpr))
(set! (.-width canvas) (* dpr (.-clientWidth ^js canvas)))
(set! (.-height canvas) (* dpr (.-clientHeight ^js canvas))))
(defn clear-canvas
[]
;; TODO: perform corresponding cleaning
(h/call internal-module "_clean_up"))
(defn set-canvas-background
[background]
(let [rgba (rgba-from-hex background 1)]

View file

@ -40,6 +40,12 @@ pub extern "C" fn init(width: i32, height: i32) {
}
}
#[no_mangle]
pub extern "C" fn clean_up() {
unsafe { STATE = None }
mem::free_bytes();
}
#[no_mangle]
pub extern "C" fn set_render_options(debug: u32, dpr: f32) {
let state = unsafe { STATE.as_mut() }.expect("got an invalid state pointer");

View file

@ -15,8 +15,10 @@ pub extern "C" fn alloc_bytes(len: usize) -> *mut u8 {
}
pub fn free_bytes() {
let buffer = unsafe { BUFFERU8.take() }.expect("uninitialized buffer");
std::mem::drop(buffer);
if unsafe { BUFFERU8.is_some() } {
let buffer = unsafe { BUFFERU8.take() }.expect("uninitialized buffer");
std::mem::drop(buffer);
}
}
pub fn buffer_ptr() -> *mut u8 {