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

Commit 98eeba88 authored by Android (Google) Code Review's avatar Android (Google) Code Review Committed by The Android Open Source Project
Browse files

am 6347c322: Merge change 1436 into donut

Merge commit '6347c322'

* commit '6347c322':
  Density Compatibility mode for SurfaceView
parents d2b4929b 6347c322
Loading
Loading
Loading
Loading
+25 −2
Original line number Diff line number Diff line
@@ -256,6 +256,23 @@ public class SurfaceView extends View {
        super.draw(canvas);
    }

    @Override
    public boolean dispatchTouchEvent(MotionEvent event) {
        // SurfaceView uses pre-scaled size unless fixed size is requested. This hook
        // scales the event back to the pre-scaled coordinates for such surface.
        if (mRequestedWidth < 0 && mAppScale != 1.0f) {
            MotionEvent scaledBack = MotionEvent.obtain(event);
            scaledBack.scale(mAppScale);
            try {
                return super.dispatchTouchEvent(scaledBack);
            } finally {
                scaledBack.recycle();
            }
        } else {
            return super.dispatchTouchEvent(event);
        }
    }

    @Override
    protected void dispatchDraw(Canvas canvas) {
        // if SKIP_DRAW is cleared, draw() has already punched a hole
@@ -279,6 +296,12 @@ public class SurfaceView extends View {
        int myHeight = mRequestedHeight;
        if (myHeight <= 0) myHeight = getHeight();

        // Use original size for surface unless fixed size is requested.
        if (mRequestedWidth <= 0) {
            myWidth *= mAppScale;
            myHeight *= mAppScale;
        }

        getLocationInWindow(mLocation);
        final boolean creating = mWindow == null;
        final boolean formatChanged = mFormat != mRequestedFormat;
@@ -334,7 +357,7 @@ public class SurfaceView extends View {
                mSurfaceLock.lock();
                mDrawingStopped = !visible;
                final int relayoutResult = mSession.relayout(
                    mWindow, mLayout, (int) (mWidth * mAppScale), (int) (mHeight * mAppScale),
                    mWindow, mLayout, mWidth, mHeight,
                        visible ? VISIBLE : GONE, false, mWinFrame, mContentInsets,
                        mVisibleInsets, mSurface);