wallet: remove unused freed_textures field from DrawUpdate, and make RenderApi::*_unmanaged_texture() methods private.

This commit is contained in:
darkfi
2024-12-09 14:20:14 +01:00
parent 0bd20aefaf
commit b72b033a39
9 changed files with 25 additions and 19 deletions

View File

@@ -79,7 +79,7 @@ pub struct ManagedTexture {
impl Drop for ManagedTexture {
fn drop(&mut self) {
self.render_api.delete_texture(self.id);
self.render_api.delete_unmanaged_texture(self.id);
}
}
@@ -89,6 +89,27 @@ impl std::fmt::Debug for ManagedTexture {
}
}
pub type ManagedBufferPtr = Arc<ManagedBuffer>;
/// Auto-deletes buffer on drop
#[derive(Clone)]
pub struct ManagedBuffer {
id: GfxBufferId,
render_api: RenderApi,
}
impl Drop for ManagedBuffer {
fn drop(&mut self) {
//self.render_api.delete_unmanaged_buffer(self.id);
}
}
impl std::fmt::Debug for ManagedBuffer {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
f.debug_struct("ManagedBuffer").field("id", &self.id).finish()
}
}
#[derive(Clone)]
pub struct RenderApi {
method_req: mpsc::Sender<GraphicsMethod>,
@@ -99,7 +120,7 @@ impl RenderApi {
Self { method_req }
}
pub fn new_unmanaged_texture(&self, width: u16, height: u16, data: Vec<u8>) -> GfxTextureId {
fn new_unmanaged_texture(&self, width: u16, height: u16, data: Vec<u8>) -> GfxTextureId {
let gfx_texture_id = rand::random();
let method = GraphicsMethod::NewTexture((width, height, data, gfx_texture_id));
@@ -115,7 +136,7 @@ impl RenderApi {
})
}
pub fn delete_texture(&self, texture: GfxTextureId) {
fn delete_unmanaged_texture(&self, texture: GfxTextureId) {
let method = GraphicsMethod::DeleteTexture(texture);
let _ = self.method_req.send(method);
}

View File

@@ -812,7 +812,6 @@ impl UIObject for ChatView {
self.dc_key,
GfxDrawCall { instrs, dcs: vec![], z_index: self.z_index.get() },
)],
freed_textures: freed.textures,
freed_buffers: freed.buffers,
})
}

View File

@@ -1273,7 +1273,6 @@ impl EditBox {
GfxDrawCall { instrs: cursor_instrs, dcs: vec![], z_index: self.z_index.get() },
),
],
freed_textures: vec![],
freed_buffers: freed.buffers,
})
}

View File

@@ -135,7 +135,6 @@ impl Image {
};
self.render_api.replace_draw_calls(draw_update.draw_calls);
debug!(target: "ui::image", "replace draw calls done");
assert!(draw_update.freed_textures.is_empty());
for buff in draw_update.freed_buffers {
self.render_api.delete_buffer(buff);
}
@@ -188,7 +187,6 @@ impl Image {
z_index: self.z_index.get(),
},
)],
freed_textures: vec![],
freed_buffers,
})
}

View File

@@ -102,7 +102,6 @@ impl Layer {
let mut draw_calls = vec![];
let mut child_calls = vec![];
let mut freed_textures = vec![];
let mut freed_buffers = vec![];
// We should return a draw call so that if the layer is made visible, we can just
@@ -117,7 +116,6 @@ impl Layer {
draw_calls.append(&mut draw_update.draw_calls);
child_calls.push(draw_update.key);
freed_textures.append(&mut draw_update.freed_textures);
freed_buffers.append(&mut draw_update.freed_buffers);
}
}
@@ -128,7 +126,7 @@ impl Layer {
z_index: self.z_index(),
};
draw_calls.push((self.dc_key, dc));
Some(DrawUpdate { key: self.dc_key, draw_calls, freed_textures, freed_buffers })
Some(DrawUpdate { key: self.dc_key, draw_calls, freed_buffers })
}
}

View File

@@ -96,7 +96,6 @@ pub trait UIObject: Sync {
pub struct DrawUpdate {
pub key: u64,
pub draw_calls: Vec<(u64, GfxDrawCall)>,
pub freed_textures: Vec<GfxTextureId>,
pub freed_buffers: Vec<GfxBufferId>,
}

View File

@@ -213,7 +213,6 @@ impl Text {
z_index: self.z_index.get(),
},
)],
freed_textures: vec![],
freed_buffers: vec![
old_render_info.mesh.vertex_buffer,
old_render_info.mesh.index_buffer,

View File

@@ -97,7 +97,6 @@ impl VectorArt {
return;
};
self.render_api.replace_draw_calls(draw_update.draw_calls);
assert!(draw_update.freed_textures.is_empty());
for buff in draw_update.freed_buffers {
self.render_api.delete_buffer(buff);
}
@@ -141,7 +140,6 @@ impl VectorArt {
z_index: self.z_index.get(),
},
)],
freed_textures: vec![],
freed_buffers,
})
}

View File

@@ -421,7 +421,6 @@ impl Window {
let mut draw_calls = vec![];
let mut child_calls = vec![];
let mut freed_textures = vec![];
let mut freed_buffers = vec![];
for child in self.get_children() {
@@ -433,7 +432,6 @@ impl Window {
draw_calls.append(&mut draw_update.draw_calls);
child_calls.push(draw_update.key);
freed_textures.append(&mut draw_update.freed_textures);
freed_buffers.append(&mut draw_update.freed_buffers);
}
@@ -447,9 +445,6 @@ impl Window {
self.render_api.replace_draw_calls(draw_calls);
for texture in freed_textures {
self.render_api.delete_texture(texture);
}
for buff in freed_buffers {
self.render_api.delete_buffer(buff);
}