am 242a8803: am 08d7ee6e: am 770128da: am cee91a3b: am 3468f856: Merge "Fix for TextureViewTest" into jb-dev
* commit '242a880349e6ef74719a19e3310d5c5343acfef5':
Fix for TextureViewTest
diff --git a/tests/tests/textureview/src/android/textureview/cts/TextureViewTestActivity.java b/tests/tests/textureview/src/android/textureview/cts/TextureViewTestActivity.java
index 92d9f89..6567387 100644
--- a/tests/tests/textureview/src/android/textureview/cts/TextureViewTestActivity.java
+++ b/tests/tests/textureview/src/android/textureview/cts/TextureViewTestActivity.java
@@ -20,7 +20,9 @@
import android.app.Activity;
import android.graphics.SurfaceTexture;
import android.os.Bundle;
+import android.view.Display;
import android.view.TextureView;
+import android.view.WindowManager;
import java.util.concurrent.Semaphore;
import java.util.concurrent.TimeUnit;
import junit.framework.Assert;
@@ -52,11 +54,32 @@
animSet.start();
}
+ private static int addMargin(int a) {
+ /* Worst case is 2 * actual refresh rate, in case when the delay pushes the frame off
+ * VSYNC every frame.
+ */
+ return 2 * a;
+ }
+
+ private static int roundUpFrame(int a, int b) {
+ /* Need to give time based on (frame duration limited by refresh rate + delay given
+ * from the test)
+ */
+ return (a + b + 1);
+ }
+
+
public Boolean waitForCompletion() {
Boolean success = false;
- int timeout = mFrames * mDelayMs * 4;
+ int oneframeMs;
+
+ WindowManager wm = (WindowManager)getSystemService(WINDOW_SERVICE);
+ Display display = wm.getDefaultDisplay();
+ float rate = display.getRefreshRate();
+ oneframeMs = roundUpFrame(mDelayMs, (int)(1000.0f / rate));
try {
- success = mSemaphore.tryAcquire(timeout, TimeUnit.MILLISECONDS);
+ success = mSemaphore.tryAcquire(addMargin(oneframeMs * mFrames),
+ TimeUnit.MILLISECONDS);
} catch (InterruptedException e) {
Assert.fail();
}