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

Commit 1d7abf0d authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Check mInputEventReceiver before sending timeline" into sc-dev

parents 8b40c9b3 d2766d01
Loading
Loading
Loading
Loading
+13 −9
Original line number Diff line number Diff line
@@ -1193,8 +1193,7 @@ public final class ViewRootImpl implements ViewParent,
                            Looper.myLooper());

                    if (mAttachInfo.mThreadedRenderer != null) {
                        InputMetricsListener listener =
                                new InputMetricsListener(mInputEventReceiver);
                        InputMetricsListener listener = new InputMetricsListener();
                        mHardwareRendererObserver = new HardwareRendererObserver(
                                listener, listener.data, mHandler, true /*waitForPresentTime*/);
                        mAttachInfo.mThreadedRenderer.addObserver(mHardwareRendererObserver);
@@ -1390,6 +1389,9 @@ public final class ViewRootImpl implements ViewParent,
                if (mAttachInfo.mThreadedRenderer != null) {
                    mAttachInfo.mHardwareAccelerated =
                            mAttachInfo.mHardwareAccelerationRequested = true;
                    if (mHardwareRendererObserver != null) {
                        mAttachInfo.mThreadedRenderer.addObserver(mHardwareRendererObserver);
                    }
                }
            }
        }
@@ -8075,6 +8077,9 @@ public final class ViewRootImpl implements ViewParent,
        ThreadedRenderer hardwareRenderer = mAttachInfo.mThreadedRenderer;

        if (hardwareRenderer != null) {
            if (mHardwareRendererObserver != null) {
                hardwareRenderer.removeObserver(mHardwareRendererObserver);
            }
            if (mView != null) {
                hardwareRenderer.destroyHardwareResources(mView);
            }
@@ -8576,18 +8581,12 @@ public final class ViewRootImpl implements ViewParent,
            super.dispose();
        }
    }
    WindowInputEventReceiver mInputEventReceiver;
    private WindowInputEventReceiver mInputEventReceiver;

    final class InputMetricsListener
            implements HardwareRendererObserver.OnFrameMetricsAvailableListener {
        public long[] data = new long[FrameMetrics.Index.FRAME_STATS_COUNT];

        private InputEventReceiver mReceiver;

        InputMetricsListener(InputEventReceiver receiver) {
            mReceiver = receiver;
        }

        @Override
        public void onFrameMetricsAvailable(int dropCountSinceLastInvocation) {
            final int inputEventId = (int) data[FrameMetrics.Index.INPUT_EVENT_ID];
@@ -8600,6 +8599,11 @@ public final class ViewRootImpl implements ViewParent,
                // available, we cannot compute end-to-end input latency metrics.
                return;
            }
            final long gpuCompletedTime = data[FrameMetrics.Index.GPU_COMPLETED];
            if (mInputEventReceiver == null) {
                return;
            }
            mInputEventReceiver.reportTimeline(inputEventId, gpuCompletedTime, presentTime);
        }
    }
    HardwareRendererObserver mHardwareRendererObserver;