mirror of
https://github.com/servo/servo.git
synced 2025-08-03 20:50:07 +01:00
Properly cancel looping before triggering another drawing loop
This commit is contained in:
parent
e94d1c44ab
commit
6b2d9bf140
1 changed files with 11 additions and 3 deletions
|
@ -133,7 +133,7 @@ public class ServoView extends GLSurfaceView
|
|||
|
||||
public void animationStateChanged(boolean animating) {
|
||||
if (!mAnimating && animating) {
|
||||
post(() -> Choreographer.getInstance().postFrameCallback(ServoView.this));
|
||||
post(() -> startLooping());
|
||||
}
|
||||
mAnimating = animating;
|
||||
}
|
||||
|
@ -182,6 +182,13 @@ public class ServoView extends GLSurfaceView
|
|||
mScroller = new OverScroller(context);
|
||||
}
|
||||
|
||||
private void startLooping() {
|
||||
// In case we were already drawing.
|
||||
Choreographer.getInstance().removeFrameCallback(this);
|
||||
|
||||
Choreographer.getInstance().postFrameCallback(this);
|
||||
}
|
||||
|
||||
public void doFrame(long frameTimeNanos) {
|
||||
if (!mRedrawing) {
|
||||
mRedrawing = true;
|
||||
|
@ -264,9 +271,10 @@ public class ServoView extends GLSurfaceView
|
|||
mCurY = (int) e.getY();
|
||||
mLastY = mCurY;
|
||||
mScroller.forceFinished(true);
|
||||
mFlinging = false;
|
||||
mServo.scrollStart(0, 0, mCurX, mCurY);
|
||||
mScrolling = true;
|
||||
Choreographer.getInstance().postFrameCallback(this);
|
||||
startLooping();
|
||||
return true;
|
||||
case (MotionEvent.ACTION_MOVE):
|
||||
mCurX = (int) e.getX();
|
||||
|
@ -305,7 +313,7 @@ public class ServoView extends GLSurfaceView
|
|||
mZoomFactor = detector.getScaleFactor();
|
||||
mZooming = true;
|
||||
mServo.pinchZoomStart(mZoomFactor, 0, 0);
|
||||
Choreographer.getInstance().postFrameCallback(this);
|
||||
startLooping();
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue