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

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

am b5c735d3: Merge change 7106 into donut

Merge commit 'b5c735d3'

* commit 'b5c735d3':
  Return adjusted display for WindowManager.getDefaultDisplay()
parents de1acad8 b5c735d3
Loading
Loading
Loading
Loading
+20 −0
Original line number Original line Diff line number Diff line
@@ -34,6 +34,7 @@ import android.util.Log;
import android.util.SparseArray;
import android.util.SparseArray;
import android.util.TypedValue;
import android.util.TypedValue;
import android.util.LongSparseArray;
import android.util.LongSparseArray;
import android.view.Display;


import java.io.IOException;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStream;
@@ -87,6 +88,7 @@ public class Resources {
    PluralRules mPluralRule;
    PluralRules mPluralRule;
    
    
    private final CompatibilityInfo mCompatibilityInfo;
    private final CompatibilityInfo mCompatibilityInfo;
    private Display mDefaultDisplay;


    private static final LongSparseArray<Object> EMPTY_ARRAY = new LongSparseArray<Object>() {
    private static final LongSparseArray<Object> EMPTY_ARRAY = new LongSparseArray<Object>() {
        @Override
        @Override
@@ -1915,6 +1917,24 @@ public class Resources {
                + Integer.toHexString(id));
                + Integer.toHexString(id));
    }
    }


    /**
     * Returns the display adjusted for the Resources' metrics.
     * @hide
     */
    public Display getDefaultDisplay(Display defaultDisplay) {
        if (mDefaultDisplay == null) {
            if (!mCompatibilityInfo.isScalingRequired() && mCompatibilityInfo.supportsScreen()) {
                // the app supports the display. just use the default one.
                mDefaultDisplay = defaultDisplay;
            } else {
                // display needs adjustment.
                mDefaultDisplay = Display.createMetricsBasedDisplay(
                        defaultDisplay.getDisplayId(), mMetrics);
            }
        }
        return mDefaultDisplay;
    }

    private TypedArray getCachedStyledAttributes(int len) {
    private TypedArray getCachedStyledAttributes(int len) {
        synchronized (mTmpValue) {
        synchronized (mTmpValue) {
            TypedArray attrs = mCachedStyledAttributes;
            TypedArray attrs = mCachedStyledAttributes;
+27 −0
Original line number Original line Diff line number Diff line
@@ -117,5 +117,32 @@ public class Display
    
    
    private static final Object mStaticInit = new Object();
    private static final Object mStaticInit = new Object();
    private static boolean mInitialized = false;
    private static boolean mInitialized = false;

    /**
     * Returns a display object which uses the metric's width/height instead.
     * @hide
     */
    public static Display createMetricsBasedDisplay(int displayId, DisplayMetrics metrics) {
        return new CompatibleDisplay(displayId, metrics);
    }

    private static class CompatibleDisplay extends Display {
        private final DisplayMetrics mMetrics;

        private CompatibleDisplay(int displayId, DisplayMetrics metrics) {
            super(displayId);
            mMetrics = metrics;
        }

        @Override
        public int getWidth() {
            return mMetrics.widthPixels;
        }

        @Override
        public int getHeight() {
            return mMetrics.heightPixels;
        }
    }
}
}
+6 −2
Original line number Original line Diff line number Diff line
@@ -358,6 +358,8 @@ public abstract class Window {
    private class LocalWindowManager implements WindowManager {
    private class LocalWindowManager implements WindowManager {
        LocalWindowManager(WindowManager wm) {
        LocalWindowManager(WindowManager wm) {
            mWindowManager = wm;
            mWindowManager = wm;
            mDefaultDisplay = mContext.getResources().getDefaultDisplay(
                    mWindowManager.getDefaultDisplay());
        }
        }


        public final void addView(View view, ViewGroup.LayoutParams params) {
        public final void addView(View view, ViewGroup.LayoutParams params) {
@@ -420,10 +422,12 @@ public abstract class Window {
        }
        }


        public Display getDefaultDisplay() {
        public Display getDefaultDisplay() {
            return mWindowManager.getDefaultDisplay();
            return mDefaultDisplay;
        }
        }
        
        
        WindowManager mWindowManager;
        private final WindowManager mWindowManager;

        private final Display mDefaultDisplay;
    }
    }


    /**
    /**