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

Commit 38ed7d77 authored by Mitsuru Oshima's avatar Mitsuru Oshima
Browse files

* Adjust canvas size under compatibility mode.

parent fe6f45c8
Loading
Loading
Loading
Loading
+22 −1
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@ package android.view;
import android.graphics.*;
import android.os.Parcelable;
import android.os.Parcel;
import android.util.DisplayMetrics;
import android.util.Log;

/**
@@ -131,6 +132,10 @@ public class Surface implements Parcelable {
    @SuppressWarnings("unused")
    private Canvas mCanvas;

    // The display metrics used to provide the pseudo canvas size for applications
    // running in compatibility mode. This is set to null for regular mode.
    private DisplayMetrics mDisplayMetrics;

    /**
     * Exception thrown when a surface couldn't be created or resized
     */
@@ -167,7 +172,23 @@ public class Surface implements Parcelable {
     * {@hide}
     */
    public Surface() {
        mCanvas = new Canvas();
        mCanvas = new Canvas() {
            @Override
            public int getWidth() {
                return mDisplayMetrics == null ? super.getWidth() : mDisplayMetrics.widthPixels;
            }
            @Override
            public int getHeight() {
                return mDisplayMetrics == null ? super.getHeight() : mDisplayMetrics.heightPixels;
            }
        };
    }

    /**
     * Sets the display metrics used to provide canva's width/height in comaptibility mode.
     */
    void setCompatibleDisplayMetrics(DisplayMetrics metrics) {
        mDisplayMetrics = metrics;
    }
    
    /**
+6 −0
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@
package android.view;

import android.content.Context;
import android.content.res.Resources;
import android.content.res.CompatibilityInfo.Translator;
import android.graphics.Canvas;
import android.graphics.PixelFormat;
@@ -301,6 +302,11 @@ public class SurfaceView extends View {

        float appScale = mTranslator == null ? 1.0f : mTranslator.applicationScale;
        
        Resources res = getContext().getResources();
        if (mTranslator != null || !res.getCompatibilityInfo().supportsScreen()) {
            mSurface.setCompatibleDisplayMetrics(res.getDisplayMetrics());
        }
        
        int myWidth = mRequestedWidth;
        if (myWidth <= 0) myWidth = getWidth();
        int myHeight = mRequestedHeight;
+8 −3
Original line number Diff line number Diff line
@@ -42,6 +42,7 @@ import android.view.inputmethod.InputMethodManager;
import android.widget.Scroller;
import android.content.pm.PackageManager;
import android.content.res.CompatibilityInfo;
import android.content.res.Resources;
import android.content.Context;
import android.app.ActivityManagerNative;
import android.Manifest;
@@ -386,10 +387,14 @@ public final class ViewRoot extends Handler implements ViewParent,
                mView = view;
                mWindowAttributes.copyFrom(attrs);
                attrs = mWindowAttributes;

                CompatibilityInfo compatibilityInfo =
                        mView.getContext().getResources().getCompatibilityInfo();
                Resources resources = mView.getContext().getResources();
                CompatibilityInfo compatibilityInfo = resources.getCompatibilityInfo();
                mTranslator = compatibilityInfo.getTranslator(attrs);

                if (mTranslator != null || !compatibilityInfo.supportsScreen()) {
                    mSurface.setCompatibleDisplayMetrics(resources.getDisplayMetrics());
                }

                boolean restore = false;
                if (attrs != null && mTranslator != null) {
                    restore = true;