Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8e0d7bce authored by Romain Guy's avatar Romain Guy Committed by Android (Google) Code Review
Browse files

Merge "Improve profiling by using Choreographer"

parents 3882ce0c d0750319
Loading
Loading
Loading
Loading
+12 −23
Original line number Diff line number Diff line
@@ -289,8 +289,8 @@ public final class ViewRootImpl implements ViewParent,
    final PointF mLastTouchPoint = new PointF();
    
    private boolean mProfileRendering;    
    private Thread mRenderProfiler;
    private volatile boolean mRenderProfilingEnabled;
    private Choreographer.FrameCallback mRenderProfiler;
    private boolean mRenderProfilingEnabled;

    // Variables to track frames per second, enabled via DEBUG_FPS flag
    private long mFpsStartTime = -1;
@@ -2037,30 +2037,19 @@ public final class ViewRootImpl implements ViewParent,
        if (mProfileRendering) {
            mRenderProfilingEnabled = enabled;
            if (mRenderProfiler == null) {
                mRenderProfiler = new Thread(new Runnable() {
                mRenderProfiler = new Choreographer.FrameCallback() {
                    @Override
                    public void run() {
                        Log.d(TAG, "Starting profiling thread");
                        while (mRenderProfilingEnabled) {
                            mAttachInfo.mHandler.post(new Runnable() {
                                @Override
                                public void run() {
                    public void doFrame(long frameTimeNanos) {
                        mDirty.set(0, 0, mWidth, mHeight);
                        scheduleTraversals();
                                }
                            });
                            try {
                                // TODO: This should use vsync when we get an API
                                Thread.sleep(15);
                            } catch (InterruptedException e) {
                                Log.d(TAG, "Exiting profiling thread");
                        if (mRenderProfilingEnabled) {
                            Choreographer.getInstance().postFrameCallback(mRenderProfiler);
                        }
                    }
                    }
                }, "Rendering Profiler");
                mRenderProfiler.start();
                };
                Choreographer.getInstance().postFrameCallback(mRenderProfiler);
            } else {
                mRenderProfiler.interrupt();
                Choreographer.getInstance().removeFrameCallback(mRenderProfiler);
                mRenderProfiler = null;
            }
        }