Kaynağa Gözat

wallet: remove old mesh and texture caches from ChatView, EditBox and VectorArt.

darkfi 1 yıl önce
ebeveyn
işleme
ed9979efc9

+ 6 - 0
bin/darkwallet/src/ui/chatview/mod.rs

@@ -995,3 +995,9 @@ impl UIObject for ChatView {
         true
     }
 }
+
+impl Drop for ChatView {
+    fn drop(&mut self) {
+        self.render_api.replace_draw_calls(vec![(self.dc_key, Default::default())]);
+    }
+}

+ 1 - 7
bin/darkwallet/src/ui/editbox.rs

@@ -263,7 +263,6 @@ pub struct EditBox {
     text_shaper: TextShaperPtr,
     key_repeat: SyncMutex<PressedKeysSmoothRepeat>,
 
-    text_mesh: SyncMutex<Option<GfxDrawMesh>>,
     glyphs: SyncMutex<Vec<Glyph>>,
     /// DC key for the text
     text_dc_key: u64,
@@ -351,7 +350,6 @@ impl EditBox {
             text_shaper: text_shaper.clone(),
             key_repeat: SyncMutex::new(PressedKeysSmoothRepeat::new(400, 50)),
 
-            text_mesh: SyncMutex::new(None),
             glyphs: SyncMutex::new(glyphs),
             text_dc_key: OsRng.gen(),
             cursor_mesh: SyncMutex::new(None),
@@ -1224,13 +1222,9 @@ impl EditBox {
         let window_scale = self.window_scale.get();
         if self.old_window_scale.swap(window_scale, Ordering::Relaxed) != window_scale {
             self.regen_glyphs();
-
-            let text_mesh = std::mem::replace(&mut *self.text_mesh.lock().unwrap(), None);
         }
 
         let text_mesh = self.regen_text_mesh(rect.clone()).await;
-        let old_text_mesh =
-            std::mem::replace(&mut *self.text_mesh.lock().unwrap(), Some(text_mesh.clone()));
 
         let cursor_instrs = self.get_cursor_instrs().await;
 
@@ -1259,7 +1253,7 @@ impl EditBox {
 
 impl Drop for EditBox {
     fn drop(&mut self) {
-        *self.text_mesh.lock().unwrap() = None;
+        self.render_api.replace_draw_calls(vec![(self.text_dc_key, Default::default())]);
     }
 }
 

+ 3 - 16
bin/darkwallet/src/ui/vector_art/mod.rs

@@ -46,7 +46,6 @@ pub struct VectorArt {
     tasks: OnceLock<Vec<smol::Task<()>>>,
 
     shape: VectorShape,
-    buffers: SyncMutex<Option<GfxDrawMesh>>,
     dc_key: u64,
 
     rect: PropertyRect,
@@ -77,7 +76,6 @@ impl VectorArt {
             tasks: OnceLock::new(),
 
             shape,
-            buffers: SyncMutex::new(None),
             dc_key: OsRng.gen(),
 
             rect,
@@ -117,8 +115,6 @@ impl VectorArt {
             num_elements: self.shape.indices.len() as i32,
         };
 
-        let old_mesh = std::mem::replace(&mut *self.buffers.lock().unwrap(), Some(mesh.clone()));
-
         Some(DrawUpdate {
             key: self.dc_key,
             draw_calls: vec![(
@@ -163,17 +159,8 @@ impl UIObject for VectorArt {
     }
 }
 
-/*
-impl Stoppable for VectorArt {
-    async fn stop(&self) {
-        // TODO: Delete own draw call
-
-        // Free buffers
-        // Should this be in drop? ---> yes it should
-        if let Some(mesh) = &*self.buffers.lock().unwrap() {
-            self.render_api.delete_buffer(mesh.vertex_buffer);
-            self.render_api.delete_buffer(mesh.index_buffer);
-        }
+impl Drop for VectorArt {
+    fn drop(&mut self) {
+        self.render_api.replace_draw_calls(vec![(self.dc_key, Default::default())]);
     }
 }
-*/