From cf78ac45690da3e2b035f55e4fb654da5c0c8e48 Mon Sep 17 00:00:00 2001 From: Patrick Walton Date: Mon, 30 Mar 2020 16:19:03 -0700 Subject: [PATCH] Fix image pattern texture atlas logic. --- canvas/src/lib.rs | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/canvas/src/lib.rs b/canvas/src/lib.rs index 89ec7a50..167da7b1 100644 --- a/canvas/src/lib.rs +++ b/canvas/src/lib.rs @@ -448,16 +448,18 @@ impl State { } fn resolve_paint<'a>(&self, paint: &'a Paint) -> Cow<'a, Paint> { - if self.transform.is_identity() { - return Cow::Borrowed(paint); - } - if let Paint::Pattern(ref pattern) = *paint { - if !self.image_smoothing_enabled == - pattern.flags.contains(PatternFlags::NO_SMOOTHING) { - return Cow::Borrowed(paint) + let mut must_copy = !self.transform.is_identity(); + if !must_copy { + if let Paint::Pattern(ref pattern) = *paint { + must_copy = !self.image_smoothing_enabled != + pattern.flags.contains(PatternFlags::NO_SMOOTHING); } } + if !must_copy { + return Cow::Borrowed(paint); + } + let mut paint = (*paint).clone(); paint.apply_transform(&self.transform); if let Paint::Pattern(ref mut pattern) = paint {