From b138da228286f560fe7aebe4e12ef5fc2ddf8e25 Mon Sep 17 00:00:00 2001 From: Yifeng Wang Date: Mon, 18 Jan 2021 14:09:13 +0800 Subject: [PATCH] fix: bitmap destructor --- skia-c/skia_c.cpp | 5 +++++ skia-c/skia_c.hpp | 1 + src/sk.rs | 10 ++++++++++ 3 files changed, 16 insertions(+) diff --git a/skia-c/skia_c.cpp b/skia-c/skia_c.cpp index a589e758..7b36e5ac 100644 --- a/skia-c/skia_c.cpp +++ b/skia-c/skia_c.cpp @@ -763,4 +763,9 @@ extern "C" auto bitmap = reinterpret_cast(c_bitmap); return bitmap->height(); } + + void skiac_bitmap_destroy(skiac_bitmap *c_bitmap) + { + delete BITMAP_CAST; + } } diff --git a/skia-c/skia_c.hpp b/skia-c/skia_c.hpp index 9837fc47..66817224 100644 --- a/skia-c/skia_c.hpp +++ b/skia-c/skia_c.hpp @@ -223,6 +223,7 @@ extern "C" skiac_bitmap *skiac_bitmap_make_from_buffer(uint8_t *ptr, size_t size); uint32_t skiac_bitmap_get_width(skiac_bitmap *c_bitmap); uint32_t skiac_bitmap_get_height(skiac_bitmap *c_bitmap); + void skiac_bitmap_destroy(skiac_bitmap *c_bitmap); } #endif // SKIA_CAPI_H diff --git a/src/sk.rs b/src/sk.rs index f930adcf..c89db36f 100644 --- a/src/sk.rs +++ b/src/sk.rs @@ -423,6 +423,8 @@ mod ffi { pub fn skiac_bitmap_get_width(c_bitmap: *mut skiac_bitmap) -> u32; pub fn skiac_bitmap_get_height(c_bitmap: *mut skiac_bitmap) -> u32; + + pub fn skiac_bitmap_destroy(c_bitmap: *mut skiac_bitmap); } } @@ -2083,6 +2085,14 @@ impl Bitmap { } } +impl Drop for Bitmap { + fn drop(&mut self) { + unsafe { + ffi::skiac_bitmap_destroy(self.bitmap); + } + } +} + #[inline(always)] fn radians_to_degrees(rad: f32) -> f32 { (rad / PI) * 180.0