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

Commit 1c6b82b0 authored by Jeff Brown's avatar Jeff Brown Committed by Android (Google) Code Review
Browse files

Merge "Refactor local window manager implementation."

parents c7e52d75 d32460c5
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -70,6 +70,7 @@ import android.util.Log;
import android.util.LogPrinter;
import android.util.PrintWriterPrinter;
import android.util.Slog;
import android.view.CompatibilityInfoHolder;
import android.view.Display;
import android.view.HardwareRenderer;
import android.view.View;
@@ -1527,7 +1528,9 @@ public final class ActivityThread {
            dm = new DisplayMetrics();
            mDisplayMetrics.put(ci, dm);
        }
        Display d = WindowManagerImpl.getDefault(ci).getDefaultDisplay();
        CompatibilityInfoHolder cih = new CompatibilityInfoHolder();
        cih.set(ci);
        Display d = WindowManagerImpl.getDefault().makeCompatible(cih).getDefaultDisplay();
        d.getMetrics(dm);
        //Slog.i("foo", "New metrics: w=" + metrics.widthPixels + " h="
        //        + metrics.heightPixels + " den=" + metrics.density
+2 −1
Original line number Diff line number Diff line
@@ -489,7 +489,8 @@ class ContextImpl extends Context {

        registerService(WINDOW_SERVICE, new ServiceFetcher() {
                public Object getService(ContextImpl ctx) {
                    return WindowManagerImpl.getDefault(ctx.mPackageInfo.mCompatibilityInfo);
                    return WindowManagerImpl.getDefault().makeCompatible(
                            ctx.mPackageInfo.mCompatibilityInfo);
                }});
    }

+3 −2
Original line number Diff line number Diff line
@@ -164,8 +164,9 @@ public final class Choreographer {
        mHandler = new FrameHandler(looper);
        mDisplayEventReceiver = USE_VSYNC ? new FrameDisplayEventReceiver(looper) : null;
        mLastFrameTimeNanos = Long.MIN_VALUE;
        mFrameIntervalNanos = (long)(1000000000 /
                new Display(Display.DEFAULT_DISPLAY, null).getRefreshRate());

        Display d = WindowManagerImpl.getDefault().getDefaultDisplay();
        mFrameIntervalNanos = (long)(1000000000 / d.getRefreshRate());

        mCallbackQueues = new CallbackQueue[CALLBACK_LAST + 1];
        for (int i = 0; i <= CALLBACK_LAST; i++) {
+0 −8
Original line number Diff line number Diff line
@@ -450,13 +450,5 @@ public class Display {
    private static final Object sStaticInit = new Object();
    private static boolean sInitialized = false;
    private static IWindowManager sWindowManager;

    /**
     * Returns a display object which uses the metric's width/height instead.
     * @hide
     */
    public static Display createCompatibleDisplay(int displayId, CompatibilityInfoHolder compat) {
        return new Display(displayId, compat);
    }
}
+48 −64
Original line number Diff line number Diff line
@@ -18,7 +18,6 @@ package android.view;

import android.app.Application;
import android.content.Context;
import android.content.res.CompatibilityInfo;
import android.content.res.Configuration;
import android.content.res.TypedArray;
import android.graphics.PixelFormat;
@@ -27,7 +26,6 @@ import android.net.Uri;
import android.os.Bundle;
import android.os.IBinder;
import android.os.SystemProperties;
import android.util.Slog;
import android.view.accessibility.AccessibilityEvent;

/**
@@ -119,6 +117,8 @@ public abstract class Window {
     */
    public static final int ID_ANDROID_CONTENT = com.android.internal.R.id.content;

    private static final String PROPERTY_HARDWARE_UI = "persist.sys.ui.hw";

    private final Context mContext;
    
    private TypedArray mWindowStyle;
@@ -126,6 +126,7 @@ public abstract class Window {
    private WindowManager mWindowManager;
    private IBinder mAppToken;
    private String mAppName;
    private boolean mHardwareAccelerated;
    private Window mContainer;
    private Window mActiveChild;
    private boolean mIsActive = false;
@@ -471,35 +472,20 @@ public abstract class Window {
            boolean hardwareAccelerated) {
        mAppToken = appToken;
        mAppName = appName;
        mHardwareAccelerated = hardwareAccelerated
                || SystemProperties.getBoolean(PROPERTY_HARDWARE_UI, false);
        if (wm == null) {
            wm = WindowManagerImpl.getDefault();
        }
        mWindowManager = new LocalWindowManager(wm, hardwareAccelerated);
    }

    static CompatibilityInfoHolder getCompatInfo(Context context) {
        Application app = (Application)context.getApplicationContext();
        return app != null ? app.mLoadedApk.mCompatibilityInfo : new CompatibilityInfoHolder();
    }

    private class LocalWindowManager extends WindowManagerImpl.CompatModeWrapper {
        private static final String PROPERTY_HARDWARE_UI = "persist.sys.ui.hw";

        private final boolean mHardwareAccelerated;

        LocalWindowManager(WindowManager wm, boolean hardwareAccelerated) {
            super(wm, getCompatInfo(mContext));
            mHardwareAccelerated = hardwareAccelerated ||
                    SystemProperties.getBoolean(PROPERTY_HARDWARE_UI, false);
        mWindowManager = ((WindowManagerImpl)wm).makeLocal(this);
    }

        public boolean isHardwareAccelerated() {
            return mHardwareAccelerated;
    CompatibilityInfoHolder getCompatibilityInfo() {
        Application app = (Application)mContext.getApplicationContext();
        return app != null ? app.mLoadedApk.mCompatibilityInfo : null;
    }

        public final void addView(View view, ViewGroup.LayoutParams params) {
            // Let this throw an exception on a bad params.
            WindowManager.LayoutParams wp = (WindowManager.LayoutParams)params;
    void adjustLayoutParamsForSubWindow(WindowManager.LayoutParams wp) {
        CharSequence curTitle = wp.getTitle();
        if (wp.type >= WindowManager.LayoutParams.FIRST_SUB_WINDOW &&
            wp.type <= WindowManager.LayoutParams.LAST_SUB_WINDOW) {
@@ -544,8 +530,6 @@ public abstract class Window {
        if (mHardwareAccelerated) {
            wp.flags |= WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED;
        }
            super.addView(view, params);
        }
    }

    /**
Loading