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

Commit 087ae471 authored by Daniel Koulomzin's avatar Daniel Koulomzin
Browse files

Making ViewRootImpl drop input events when the Activity is in ambient

mode.

WearableActivityController tells ViewRootImpl about ambient mode.

Bug: 25912259
Bug: 25973146
Bug: 25714113
Change-Id: Idcca2b254db3145039f50f2a7dfd38a224ec287e
parent d0dd157a
Loading
Loading
Loading
Loading
+11 −1
Original line number Diff line number Diff line
@@ -174,6 +174,10 @@ public final class ViewRootImpl implements ViewParent,
    // so the window should no longer be active.
    boolean mStopped = false;

    // Set to true if the owner of this window is in ambient mode,
    // which means it won't receive input events.
    boolean mIsAmbientMode = false;

    // Set to true to stop input during an Activity Transition.
    boolean mPausedForTransition = false;

@@ -990,6 +994,10 @@ public final class ViewRootImpl implements ViewParent,
        }
    }

    public void setIsAmbientMode(boolean ambient) {
        mIsAmbientMode = ambient;
    }

    void setWindowStopped(boolean stopped) {
        if (mStopped != stopped) {
            mStopped = stopped;
@@ -3704,7 +3712,7 @@ public final class ViewRootImpl implements ViewParent,
                return true;
            } else if ((!mAttachInfo.mHasWindowFocus
                    && !q.mEvent.isFromSource(InputDevice.SOURCE_CLASS_POINTER)) || mStopped
                    || (mPausedForTransition && !isBack(q.mEvent))) {
                    || mIsAmbientMode || (mPausedForTransition && !isBack(q.mEvent))) {
                // This is a focus event and the window doesn't currently have input focus or
                // has stopped. This could be an event that came back from the previous stage
                // but the window has lost focus or stopped in the meantime.
@@ -5514,6 +5522,8 @@ public final class ViewRootImpl implements ViewParent,
                writer.println(mProcessInputEventsScheduled);
        writer.print(innerPrefix); writer.print("mTraversalScheduled=");
                writer.print(mTraversalScheduled);
        writer.print(innerPrefix); writer.print("mIsAmbientMode=");
                writer.print(mIsAmbientMode);
        if (mTraversalScheduled) {
            writer.print(" (barrier="); writer.print(mTraversalBarrier); writer.println(")");
        } else {