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

Commit b4ca0dcb authored by Kris Chen's avatar Kris Chen
Browse files

Transform UDFPS touch coordinates to portrait mode

Bug: 215810673
Test: manual on device
Change-Id: Ia88a3e2e3fcba4f503cb4f8b746653eae9ad9d25
parent 7ade3e1c
Loading
Loading
Loading
Loading
+29 −2
Original line number Diff line number Diff line
@@ -28,6 +28,7 @@ import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.graphics.Point;
import android.graphics.RectF;
import android.hardware.biometrics.SensorLocationInternal;
import android.hardware.display.DisplayManager;
@@ -45,6 +46,7 @@ import android.os.Vibrator;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.Surface;
import android.view.VelocityTracker;
import android.view.View;
import android.view.WindowManager;
@@ -414,8 +416,33 @@ public class UdfpsController implements DozeReceiver {
                        final long sinceLastLog = mSystemClock.elapsedRealtime() - mTouchLogTime;
                        if (!isIlluminationRequested && !mGoodCaptureReceived &&
                                !exceedsVelocityThreshold) {
                            onFingerDown((int) event.getRawX(), (int) event.getRawY(), minor,
                                    major);
                            final int rawX = (int) event.getRawX();
                            final int rawY = (int) event.getRawY();
                            // Default coordinates assume portrait mode.
                            int x = rawX;
                            int y = rawY;

                            // Gets the size based on the current rotation of the display.
                            Point p = new Point();
                            mContext.getDisplay().getRealSize(p);

                            // Transform x, y to portrait mode if the device is in landscape mode.
                            switch (mContext.getDisplay().getRotation()) {
                                case Surface.ROTATION_90:
                                    x = p.y - rawY;
                                    y = rawX;
                                    break;

                                case Surface.ROTATION_270:
                                    x = rawY;
                                    y = p.x - rawX;
                                    break;

                                default:
                                    // Do nothing to stay in portrait mode.
                            }

                            onFingerDown(x, y, minor, major);
                            Log.v(TAG, "onTouch | finger down: " + touchInfo);
                            mTouchLogTime = mSystemClock.elapsedRealtime();
                            mPowerManager.userActivity(mSystemClock.uptimeMillis(),