import java.util.ArrayDeque;
import java.util.ArrayList;
+import java.util.concurrent.locks.Condition;
import java.util.concurrent.locks.ReentrantLock;
import javax.microedition.khronos.egl.EGLConfig;
private final IdleRunner mIdleRunner = new IdleRunner();
private final ReentrantLock mRenderLock = new ReentrantLock();
+ private final Condition mFreezeCondition =
+ mRenderLock.newCondition();
+ private boolean mFreeze;
private long mLastDrawFinishTime;
private boolean mInDownState = false;
t0 = System.nanoTime();
}
mRenderLock.lock();
+
+ while (mFreeze) {
+ mFreezeCondition.awaitUninterruptibly();
+ }
+
try {
onDrawFrameLocked(gl);
} finally {
public Matrix getCompensationMatrix() {
return mCompensationMatrix;
}
+
+ @Override
+ public void freeze() {
+ mRenderLock.lock();
+ mFreeze = true;
+ mRenderLock.unlock();
+ }
+
+ @Override
+ public void unfreeze() {
+ mRenderLock.lock();
+ mFreeze = false;
+ mFreezeCondition.signalAll();
+ mRenderLock.unlock();
+ }
}
public int getDisplayRotation() { return 0; }
public int getCompensation() { return 0; }
public Matrix getCompensationMatrix() { return null; }
+ public void freeze() {}
+ public void unfreeze() {}
}
public int getDisplayRotation() { return 0; }
public int getCompensation() { return 0; }
public Matrix getCompensationMatrix() { return null; }
+ public void freeze() {}
+ public void unfreeze() {}
}