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

Commit 3aabdeac authored by Dianne Hackborn's avatar Dianne Hackborn Committed by Android Git Automerger
Browse files

am 5ba2e872: Merge "Fix for not reporting correct "sw" in compat mode." into honeycomb-mr2

* commit '5ba2e872':
  Fix for not reporting correct "sw" in compat mode.
parents 2d618e41 5ba2e872
Loading
Loading
Loading
Loading
+10 −6
Original line number Diff line number Diff line
@@ -342,10 +342,12 @@ public class WindowManagerImpl implements WindowManager {
            return view;
        }

        if (view != null) {
            InputMethodManager imm = InputMethodManager.getInstance(view.getContext());
            if (imm != null) {
                imm.windowDismissed(mViews[index].getWindowToken());
            }
        }
        root.die(false);
        finishRemoveViewLocked(view, index);
        return view;
@@ -368,10 +370,12 @@ public class WindowManagerImpl implements WindowManager {
        removeItem(tmpParams, mParams, index);
        mParams = tmpParams;

        if (view != null) {
            view.assignParent(null);
            // func doesn't allow null...  does it matter if we clear them?
            //view.setLayoutParams(null);
        }
    }

    public void closeAll(IBinder token, String who, String what) {
        synchronized (this) {
+3 −2
Original line number Diff line number Diff line
@@ -54,8 +54,9 @@ public class CompatModeButton extends ImageView implements View.OnClickListener
    }

    public void refresh() {
        setVisibility(
                (mAM.getFrontActivityScreenCompatMode() == ActivityManager.COMPAT_MODE_NEVER)
        int mode = mAM.getFrontActivityScreenCompatMode();
        setVisibility((mode == ActivityManager.COMPAT_MODE_NEVER
                        || mode == ActivityManager.COMPAT_MODE_ALWAYS)
                ? View.GONE
                : View.VISIBLE
            );
+33 −3
Original line number Diff line number Diff line
@@ -466,6 +466,7 @@ public class WindowManagerService extends IWindowManager.Stub
    Display mDisplay;

    final DisplayMetrics mDisplayMetrics = new DisplayMetrics();
    final DisplayMetrics mTmpDisplayMetrics = new DisplayMetrics();
    final DisplayMetrics mCompatDisplayMetrics = new DisplayMetrics();

    H mH = new H();
@@ -5549,6 +5550,36 @@ public class WindowManagerService extends IWindowManager.Stub
        return sw;
    }

    private int reduceCompatConfigWidthSize(int curSize, int rotation, DisplayMetrics dm,
            int dw, int dh) {
        dm.unscaledWidthPixels = mPolicy.getNonDecorDisplayWidth(rotation, dw);
        dm.unscaledHeightPixels = mPolicy.getNonDecorDisplayHeight(rotation, dh);
        float scale = CompatibilityInfo.computeCompatibleScaling(dm, null);
        int size = (int)(((dm.unscaledWidthPixels / scale) / dm.density) + .5f);
        if (curSize == 0 || size < curSize) {
            curSize = size;
        }
        return curSize;
    }

    private int computeCompatSmallestWidth(boolean rotated, DisplayMetrics dm, int dw, int dh) {
        mTmpDisplayMetrics.setTo(dm);
        dm = mTmpDisplayMetrics;
        int unrotDw, unrotDh;
        if (rotated) {
            unrotDw = dh;
            unrotDh = dw;
        } else {
            unrotDw = dw;
            unrotDh = dh;
        }
        int sw = reduceCompatConfigWidthSize(0, Surface.ROTATION_0, dm, unrotDw, unrotDh);
        sw = reduceCompatConfigWidthSize(sw, Surface.ROTATION_90, dm, unrotDh, unrotDw);
        sw = reduceCompatConfigWidthSize(sw, Surface.ROTATION_180, dm, unrotDw, unrotDh);
        sw = reduceCompatConfigWidthSize(sw, Surface.ROTATION_270, dm, unrotDh, unrotDw);
        return sw;
    }

    boolean computeNewConfigurationLocked(Configuration config) {
        if (mDisplay == null) {
            return false;
@@ -5613,8 +5644,7 @@ public class WindowManagerService extends IWindowManager.Stub

        config.compatScreenWidthDp = (int)(config.screenWidthDp / mCompatibleScreenScale);
        config.compatScreenHeightDp = (int)(config.screenHeightDp / mCompatibleScreenScale);
        config.compatSmallestScreenWidthDp = (int)(config.smallestScreenWidthDp
                / mCompatibleScreenScale);
        config.compatSmallestScreenWidthDp = computeCompatSmallestWidth(rotated, dm, dw, dh);

        // We need to determine the smallest width that will occur under normal
        // operation.  To this, start with the base screen size and compute the
@@ -8091,7 +8121,7 @@ public class WindowManagerService extends IWindowManager.Stub
                                if (mDimAnimator == null) {
                                    mDimAnimator = new DimAnimator(mFxSession);
                                }
                                mDimAnimator.show(dw, dh);
                                mDimAnimator.show(innerDw, innerDh);
                                mDimAnimator.updateParameters(mContext.getResources(),
                                        w, currentTime);
                            }