From 562b1f11ab2f909623d057f29ef65506d85d04c6 Mon Sep 17 00:00:00 2001 From: Michael Bayne Date: Tue, 5 Dec 2006 06:21:33 +0000 Subject: [PATCH] Patch from nvanderh: handle dirtying properly if our bounds change between frames. git-svn-id: svn+ssh://src.earth.threerings.net/nenya/trunk@86 ed5b42cb-e716-0410-a449-f6a68f950b19 --- .../media/animation/MultiFrameAnimation.java | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/src/java/com/threerings/media/animation/MultiFrameAnimation.java b/src/java/com/threerings/media/animation/MultiFrameAnimation.java index 98a48dfd..4abb8100 100644 --- a/src/java/com/threerings/media/animation/MultiFrameAnimation.java +++ b/src/java/com/threerings/media/animation/MultiFrameAnimation.java @@ -98,11 +98,23 @@ public class MultiFrameAnimation extends Animation _finished = true; } else if (fidx != _fidx) { + // make a note of our current bounds + Rectangle dirty = new Rectangle(_bounds); + // update our frame index and bounds setFrameIndex(fidx); - // and have ourselves repainted - invalidate(); + if (_mgr != null) { + // if our new bounds intersect our old bounds, grow a single + // dirty rectangle to incorporate them both, otherwise + // invalidate them separately + if (_bounds.intersects(dirty)) { + dirty.add(_bounds); + } else { + _mgr.getRegionManager().invalidateRegion(_bounds); + } + _mgr.getRegionManager().addDirtyRegion(dirty); + } } }