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

Commit da3c2e5c authored by Winson Chung's avatar Winson Chung Committed by Android (Google) Code Review
Browse files

Merge "Save all the predraw-cancel listeners as the cancel reason" into main

parents 1772ec3a 3f4dd559
Loading
Loading
Loading
Loading
+14 −5
Original line number Diff line number Diff line
@@ -75,7 +75,7 @@ public final class ViewTreeObserver {
    private boolean mWindowShown;

    // The reason that the last call to dispatchOnPreDraw() returned true to cancel and redraw
    private String mLastDispatchOnPreDrawCanceledReason;
    private StringBuilder mLastDispatchOnPreDrawCanceledReason;

    private boolean mAlive = true;

@@ -1173,9 +1173,15 @@ public final class ViewTreeObserver {
                int count = access.size();
                for (int i = 0; i < count; i++) {
                    final OnPreDrawListener preDrawListener = access.get(i);
                    cancelDraw |= !(preDrawListener.onPreDraw());
                    if (cancelDraw) {
                        mLastDispatchOnPreDrawCanceledReason = preDrawListener.getClass().getName();
                    final boolean listenerCanceledDraw = !(preDrawListener.onPreDraw());
                    cancelDraw |= listenerCanceledDraw;
                    if (listenerCanceledDraw) {
                        final String className = preDrawListener.getClass().getName();
                        if (mLastDispatchOnPreDrawCanceledReason == null) {
                            mLastDispatchOnPreDrawCanceledReason = new StringBuilder(className);
                        } else {
                            mLastDispatchOnPreDrawCanceledReason.append("|").append(className);
                        }
                    }
                }
            } finally {
@@ -1191,7 +1197,10 @@ public final class ViewTreeObserver {
     * @hide
     */
    final String getLastDispatchOnPreDrawCanceledReason() {
        return mLastDispatchOnPreDrawCanceledReason;
        if (mLastDispatchOnPreDrawCanceledReason != null) {
            return mLastDispatchOnPreDrawCanceledReason.toString();
        }
        return null;
    }

    /**