Skip to content

Commit

Permalink
Fix multiple partial updates of the same texture (#1338)
Browse files Browse the repository at this point in the history
Co-authored-by: Wanja Zaeske <wanja.zaeske@dlr.de>
Co-authored-by: Emil Ernerfeldt <emil.ernerfeldt@gmail.com>
  • Loading branch information
3 people authored Jun 19, 2022
1 parent f5b2363 commit bd5f553
Showing 1 changed file with 5 additions and 4 deletions.
9 changes: 5 additions & 4 deletions epaint/src/textures.rs
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ impl TextureManager {
filter,
});

self.delta.set.insert(id, ImageDelta::full(image, filter));
self.delta.set.push((id, ImageDelta::full(image, filter)));
id
}

Expand All @@ -57,9 +57,10 @@ impl TextureManager {
// whole update
meta.size = delta.image.size();
meta.bytes_per_pixel = delta.image.bytes_per_pixel();
// since we update the whole image, we can discard all old enqueued deltas
self.delta.set.retain(|(x, _)| x != &id);
}

self.delta.set.insert(id, delta);
self.delta.set.push((id, delta));
} else {
crate::epaint_assert!(false, "Tried setting texture {id:?} which is not allocated");
}
Expand Down Expand Up @@ -175,7 +176,7 @@ impl TextureMeta {
#[must_use = "The painter must take care of this"]
pub struct TexturesDelta {
/// New or changed textures. Apply before painting.
pub set: AHashMap<TextureId, ImageDelta>,
pub set: Vec<(TextureId, ImageDelta)>,

/// Textures to free after painting.
pub free: Vec<TextureId>,
Expand Down

0 comments on commit bd5f553

Please sign in to comment.