From e3e31fa399de127947e2d62c8572a9b16ac944de Mon Sep 17 00:00:00 2001 From: Patrick Walton Date: Fri, 9 Dec 2011 10:01:31 -0500 Subject: [PATCH] Bug 708519 - Pref off the frame rate meter r=kats --- mobile/android/base/gfx/LayerRenderer.java | 31 +++++++++++++++++----- 1 file changed, 25 insertions(+), 6 deletions(-) diff --git a/mobile/android/base/gfx/LayerRenderer.java b/mobile/android/base/gfx/LayerRenderer.java index d23a6692d9b4..fb7c89706a0c 100644 --- a/mobile/android/base/gfx/LayerRenderer.java +++ b/mobile/android/base/gfx/LayerRenderer.java @@ -49,6 +49,7 @@ import org.mozilla.gecko.gfx.TextureReaper; import org.mozilla.gecko.gfx.TextLayer; import org.mozilla.gecko.gfx.TileLayer; import android.content.Context; +import android.content.SharedPreferences; import android.graphics.Point; import android.graphics.PointF; import android.graphics.Rect; @@ -89,6 +90,7 @@ public class LayerRenderer implements GLSurfaceView.Renderer { // Dropped frames display private int[] mFrameTimings; private int mCurrentFrame, mFrameTimingsSum, mDroppedFrames; + private boolean mShowFrameRate; public LayerRenderer(LayerView view) { mView = view; @@ -109,9 +111,12 @@ public class LayerRenderer implements GLSurfaceView.Renderer { mFrameTimings = new int[60]; mCurrentFrame = mFrameTimingsSum = mDroppedFrames = 0; + mShowFrameRate = false; } public void onSurfaceCreated(GL10 gl, EGLConfig config) { + checkFrameRateMonitorEnabled(); + gl.glClearColor(0.0f, 0.0f, 0.0f, 1.0f); gl.glClearDepthf(1.0f); /* FIXME: Is this needed? */ gl.glHint(GL10.GL_PERSPECTIVE_CORRECTION_HINT, GL10.GL_FASTEST); @@ -177,12 +182,14 @@ public class LayerRenderer implements GLSurfaceView.Renderer { mHorizScrollLayer.draw(pageContext); /* Draw the FPS. */ - updateDroppedFrames(frameStartTime); - try { - gl.glEnable(GL10.GL_BLEND); - mFrameRateLayer.draw(screenContext); - } finally { - gl.glDisable(GL10.GL_BLEND); + if (mShowFrameRate) { + updateDroppedFrames(frameStartTime); + try { + gl.glEnable(GL10.GL_BLEND); + mFrameRateLayer.draw(screenContext); + } finally { + gl.glDisable(GL10.GL_BLEND); + } } PanningPerfAPI.recordFrameTime(); @@ -280,4 +287,16 @@ public class LayerRenderer implements GLSurfaceView.Renderer { mFrameRateLayer.endTransaction(); } } + + private void checkFrameRateMonitorEnabled() { + /* Do this I/O off the main thread to minimize its impact on startup time. */ + new Thread(new Runnable() { + @Override + public void run() { + Context context = mView.getContext(); + SharedPreferences preferences = context.getSharedPreferences("GeckoApp", 0); + mShowFrameRate = preferences.getBoolean("showFrameRate", false); + } + }).run(); + } }