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

Commit 765487f9 authored by Jaewan Kim's avatar Jaewan Kim
Browse files

Revive volume up/down long press in TV

PhoneWindowManager.interceptKeyBeforeQueuing isn't good place
to handle long press because rejecting a down event will not
synthesize further key repeat.

Move the logic to PhoneWindowManager.interceptKeyBeforeDispatching
instead.

This is the regression caused by following CL
001c59c6 Route volume keys directly to the audio system on TVs

Bug: 26268032
Change-Id: Ic8f6dfaec473c0d45ffa42475763622dc700e635
parent 76774af1
Loading
Loading
Loading
Loading
+19 −17
Original line number Diff line number Diff line
@@ -2963,6 +2963,14 @@ public class PhoneWindowManager implements WindowManagerPolicy {
                        UserHandle.CURRENT_OR_SELF);
            }
            return -1;
        } else if (keyCode == KeyEvent.KEYCODE_VOLUME_UP
                || keyCode == KeyEvent.KEYCODE_VOLUME_DOWN
                || keyCode == KeyEvent.KEYCODE_VOLUME_MUTE) {
            if (mUseTvRouting) {
                // On TVs volume keys never go to the foreground app.
                dispatchDirectAudioEvent(event);
                return -1;
            }
        } else if (KeyEvent.isMetaKey(keyCode)) {
            if (down) {
                mPendingMetaAction = true;
@@ -5040,10 +5048,6 @@ public class PhoneWindowManager implements WindowManagerPolicy {
            case KeyEvent.KEYCODE_VOLUME_DOWN:
            case KeyEvent.KEYCODE_VOLUME_UP:
            case KeyEvent.KEYCODE_VOLUME_MUTE: {
                if (mUseTvRouting) {
                    // On TVs volume keys never go to the foreground app
                    result &= ~ACTION_PASS_TO_USER;
                }
                if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN) {
                    if (down) {
                        if (interactive && !mScreenshotChordVolumeDownKeyTriggered
@@ -5103,11 +5107,12 @@ public class PhoneWindowManager implements WindowManagerPolicy {
                            break;
                        }
                    }

                    if ((result & ACTION_PASS_TO_USER) == 0) {
                }
                if (mUseTvRouting) {
                            dispatchDirectAudioEvent(event);
                        } else {
                    // On TVs, defer special key handlings to
                    // {@link interceptKeyBeforeDispatching()}.
                    result |= ACTION_PASS_TO_USER;
                } else if ((result & ACTION_PASS_TO_USER) == 0) {
                    // If we aren't passing to the user and no one else
                    // handled it send it to the session manager to
                    // figure out.
@@ -5116,9 +5121,6 @@ public class PhoneWindowManager implements WindowManagerPolicy {
                }
                break;
            }
                }
                break;
            }

            case KeyEvent.KEYCODE_ENDCALL: {
                result &= ~ACTION_PASS_TO_USER;