diff --git a/support/android/apk/servoapp/src/main/java/com/mozilla/servo/MainActivity.java b/support/android/apk/servoapp/src/main/java/com/mozilla/servo/MainActivity.java
index 794e8ae5564..15a0d49e0c8 100644
--- a/support/android/apk/servoapp/src/main/java/com/mozilla/servo/MainActivity.java
+++ b/support/android/apk/servoapp/src/main/java/com/mozilla/servo/MainActivity.java
@@ -18,6 +18,7 @@ import android.webkit.URLUtil;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ProgressBar;
+import android.widget.TextView;
import com.mozilla.servoview.ServoView;
import com.mozilla.servoview.Servo;
@@ -35,6 +36,7 @@ public class MainActivity extends Activity implements Servo.Client {
Button mStopButton;
EditText mUrlField;
ProgressBar mProgressBar;
+ TextView mIdleText;
@Override
@@ -49,6 +51,7 @@ public class MainActivity extends Activity implements Servo.Client {
mStopButton = findViewById(R.id.stopbutton);
mUrlField = findViewById(R.id.urlfield);
mProgressBar = findViewById(R.id.progressbar);
+ mIdleText = findViewById(R.id.redrawing);
mBackButton.setEnabled(false);
mFwdButton.setEnabled(false);
@@ -151,6 +154,14 @@ public class MainActivity extends Activity implements Servo.Client {
mFwdButton.setEnabled(canGoForward);
}
+ public void onRedrawing(boolean redrawing) {
+ if (redrawing) {
+ mIdleText.setText("LOOP");
+ } else {
+ mIdleText.setText("IDLE");
+ }
+ }
+
@Override
public void onPause() {
mServoView.onPause();
diff --git a/support/android/apk/servoapp/src/main/res/layout/activity_main.xml b/support/android/apk/servoapp/src/main/res/layout/activity_main.xml
index 2d8fab9c663..b8ae7fb94c3 100644
--- a/support/android/apk/servoapp/src/main/res/layout/activity_main.xml
+++ b/support/android/apk/servoapp/src/main/res/layout/activity_main.xml
@@ -82,6 +82,17 @@
android:text="Rld"
android:textSize="10sp" />
+
+
mClient.onHistoryChanged(canGoBack, canGoForward));
}
+ public void onRedrawing(boolean redrawing) {
+ mRunCallback.inUIThread(() -> mClient.onRedrawing(redrawing));
+ }
+
public byte[] readfile(String file) {
try {
InputStream stream = mAssetMgr.open(file);
diff --git a/support/android/apk/servoview/src/main/java/com/mozilla/servoview/ServoView.java b/support/android/apk/servoview/src/main/java/com/mozilla/servoview/ServoView.java
index ffc0c4504b7..c886b44ea4a 100644
--- a/support/android/apk/servoview/src/main/java/com/mozilla/servoview/ServoView.java
+++ b/support/android/apk/servoview/src/main/java/com/mozilla/servoview/ServoView.java
@@ -55,6 +55,8 @@ public class ServoView extends GLSurfaceView
private boolean mZooming;
private float mZoomFactor = 1;
+ private boolean mRedrawing;
+
public ServoView(Context context, AttributeSet attrs) {
super(context, attrs);
mActivity = (Activity) context;
@@ -152,6 +154,10 @@ public class ServoView extends GLSurfaceView
}
public void doFrame(long frameTimeNanos) {
+ if (!mRedrawing) {
+ mRedrawing = true;
+ mClient.onRedrawing(mRedrawing);
+ }
// 3 reasons to be here: animating or scrolling/flinging or pinching
@@ -191,6 +197,9 @@ public class ServoView extends GLSurfaceView
if (mZooming || mScrolling || mAnimating) {
Choreographer.getInstance().postFrameCallback(this);
+ } else {
+ mRedrawing = false;
+ mClient.onRedrawing(mRedrawing);
}
}