diff options
author | 2024-05-08 19:16:20 +0900 | |
---|---|---|
committer | 2024-05-08 19:16:20 +0900 | |
commit | ff26fb7df43bd241253af85e0621e2cc030e9cec (patch) | |
tree | 2b3272bb178f8757169511966589fe6a106733f4 /wgpu/src/triangle.rs | |
parent | 0ebe0629cef37aee5c48b9409fc36618a3a3e60d (diff) | |
parent | 477887b3870aa5fbdab96c3a06f3b930462d7842 (diff) | |
download | iced-ff26fb7df43bd241253af85e0621e2cc030e9cec.tar.gz iced-ff26fb7df43bd241253af85e0621e2cc030e9cec.tar.bz2 iced-ff26fb7df43bd241253af85e0621e2cc030e9cec.zip |
Merge branch 'iced-rs-master' into viewer_content_fit
Diffstat (limited to 'wgpu/src/triangle.rs')
-rw-r--r-- | wgpu/src/triangle.rs | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/wgpu/src/triangle.rs b/wgpu/src/triangle.rs index 8470ea39..b0551f55 100644 --- a/wgpu/src/triangle.rs +++ b/wgpu/src/triangle.rs @@ -6,9 +6,9 @@ use crate::graphics::mesh::{self, Mesh}; use crate::graphics::Antialiasing; use crate::Buffer; -use rustc_hash::{FxHashMap, FxHashSet}; +use rustc_hash::FxHashMap; use std::collections::hash_map; -use std::rc::Rc; +use std::rc::{self, Rc}; use std::sync::atomic::{self, AtomicU64}; const INITIAL_INDEX_COUNT: usize = 1_000; @@ -64,12 +64,12 @@ struct Upload { layer: Layer, transformation: Transformation, version: usize, + batch: rc::Weak<[Mesh]>, } #[derive(Debug, Default)] pub struct Storage { uploads: FxHashMap<Id, Upload>, - recently_used: FxHashSet<Id>, } impl Storage { @@ -113,6 +113,7 @@ impl Storage { new_transformation, ); + upload.batch = Rc::downgrade(&cache.batch); upload.version = cache.version; upload.transformation = new_transformation; } @@ -134,22 +135,21 @@ impl Storage { layer, transformation: new_transformation, version: 0, + batch: Rc::downgrade(&cache.batch), }); - log::info!( + log::debug!( "New mesh upload: {} (total: {})", cache.id.0, self.uploads.len() ); } } - - let _ = self.recently_used.insert(cache.id); } pub fn trim(&mut self) { - self.uploads.retain(|id, _| self.recently_used.contains(id)); - self.recently_used.clear(); + self.uploads + .retain(|_id, upload| upload.batch.strong_count() > 0); } } |