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

Commit ff2a8c13 authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Topology API" into main

parents 1ab13f29 e75d2656
Loading
Loading
Loading
Loading
+11 −0
Original line number Diff line number Diff line
@@ -20881,13 +20881,16 @@ package android.hardware.display {
    method @Nullable public android.hardware.display.VirtualDisplay createVirtualDisplay(@NonNull android.hardware.display.VirtualDisplayConfig);
    method @Nullable public android.hardware.display.VirtualDisplay createVirtualDisplay(@NonNull android.hardware.display.VirtualDisplayConfig, @Nullable android.os.Handler, @Nullable android.hardware.display.VirtualDisplay.Callback);
    method public android.view.Display getDisplay(int);
    method @FlaggedApi("com.android.server.display.feature.flags.display_topology_api") @Nullable @RequiresPermission("android.permission.MANAGE_DISPLAYS") public android.hardware.display.DisplayTopology getDisplayTopology();
    method public android.view.Display[] getDisplays();
    method public android.view.Display[] getDisplays(String);
    method @NonNull public android.hardware.display.HdrConversionMode getHdrConversionMode();
    method public int getMatchContentFrameRateUserPreference();
    method public void registerDisplayListener(android.hardware.display.DisplayManager.DisplayListener, android.os.Handler);
    method @FlaggedApi("com.android.server.display.feature.flags.display_listener_performance_improvements") public void registerDisplayListener(@NonNull java.util.concurrent.Executor, long, @NonNull android.hardware.display.DisplayManager.DisplayListener);
    method @FlaggedApi("com.android.server.display.feature.flags.display_topology_api") @RequiresPermission("android.permission.MANAGE_DISPLAYS") public void registerTopologyListener(@NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<android.hardware.display.DisplayTopology>);
    method public void unregisterDisplayListener(android.hardware.display.DisplayManager.DisplayListener);
    method @FlaggedApi("com.android.server.display.feature.flags.display_topology_api") @RequiresPermission("android.permission.MANAGE_DISPLAYS") public void unregisterTopologyListener(@NonNull java.util.function.Consumer<android.hardware.display.DisplayTopology>);
    field @FlaggedApi("com.android.server.display.feature.flags.display_category_built_in") public static final String DISPLAY_CATEGORY_BUILT_IN_DISPLAYS = "android.hardware.display.category.BUILT_IN_DISPLAYS";
    field public static final String DISPLAY_CATEGORY_PRESENTATION = "android.hardware.display.category.PRESENTATION";
    field @FlaggedApi("com.android.server.display.feature.flags.display_listener_performance_improvements") public static final long EVENT_TYPE_DISPLAY_ADDED = 1L; // 0x1L
@@ -20912,6 +20915,13 @@ package android.hardware.display {
    method public void onDisplayRemoved(int);
  }
  @FlaggedApi("com.android.server.display.feature.flags.display_topology_api") public final class DisplayTopology implements android.os.Parcelable {
    method public int describeContents();
    method @NonNull public android.util.SparseArray<android.graphics.RectF> getAbsoluteBounds();
    method public void writeToParcel(@NonNull android.os.Parcel, int);
    field @NonNull public static final android.os.Parcelable.Creator<android.hardware.display.DisplayTopology> CREATOR;
  }
  public final class HdrConversionMode implements android.os.Parcelable {
    ctor public HdrConversionMode(int, int);
    ctor public HdrConversionMode(int);
@@ -52242,6 +52252,7 @@ package android.view {
    method @FlaggedApi("com.android.server.display.feature.flags.enable_has_arr_support") public boolean hasArrSupport();
    method public boolean isHdr();
    method public boolean isHdrSdrRatioAvailable();
    method @FlaggedApi("com.android.server.display.feature.flags.display_topology_api") public boolean isInternal();
    method public boolean isMinimalPostProcessingSupported();
    method public boolean isValid();
    method public boolean isWideColorGamut();
+0 −8
Original line number Diff line number Diff line
@@ -1757,7 +1757,6 @@ package android.hardware.display {
  public final class DisplayManager {
    method public boolean areUserDisabledHdrTypesAllowed();
    method @RequiresPermission(android.Manifest.permission.MODIFY_USER_PREFERRED_DISPLAY_MODE) public void clearGlobalUserPreferredDisplayMode();
    method @FlaggedApi("com.android.server.display.feature.flags.display_topology") @Nullable @RequiresPermission("android.permission.MANAGE_DISPLAYS") public android.hardware.display.DisplayTopology getDisplayTopology();
    method @Nullable public android.view.Display.Mode getGlobalUserPreferredDisplayMode();
    method @NonNull public android.hardware.display.HdrConversionMode getHdrConversionModeSetting();
    method @NonNull public int[] getSupportedHdrOutputTypes();
@@ -1784,13 +1783,6 @@ package android.hardware.display {
    field public static final int VIRTUAL_DISPLAY_FLAG_SUPPORTS_TOUCH = 64; // 0x40
  }

  @FlaggedApi("com.android.server.display.feature.flags.display_topology") public final class DisplayTopology implements android.os.Parcelable {
    method public int describeContents();
    method @NonNull public android.util.SparseArray<android.graphics.RectF> getAbsoluteBounds();
    method public void writeToParcel(@NonNull android.os.Parcel, int);
    field @NonNull public static final android.os.Parcelable.Creator<android.hardware.display.DisplayTopology> CREATOR;
  }

}

package android.hardware.fingerprint {
+3 −8
Original line number Diff line number Diff line
@@ -1942,13 +1942,10 @@ public final class DisplayManager {
    /**
     * @return The current display topology that represents the relative positions of extended
     * displays.
     *
     * @hide
     */
    @RequiresPermission(MANAGE_DISPLAYS)
    @Nullable
    @TestApi
    @FlaggedApi(Flags.FLAG_DISPLAY_TOPOLOGY)
    @FlaggedApi(Flags.FLAG_DISPLAY_TOPOLOGY_API)
    public DisplayTopology getDisplayTopology() {
        return mGlobal.getDisplayTopology();
    }
@@ -1968,10 +1965,9 @@ public final class DisplayManager {
     * Register a listener to receive display topology updates.
     * @param executor The executor specifying the thread on which the callbacks will be invoked
     * @param listener The listener
     *
     * @hide
     */
    @RequiresPermission(MANAGE_DISPLAYS)
    @FlaggedApi(Flags.FLAG_DISPLAY_TOPOLOGY_API)
    public void registerTopologyListener(@NonNull @CallbackExecutor Executor executor,
            @NonNull Consumer<DisplayTopology> listener) {
        mGlobal.registerTopologyListener(executor, listener, ActivityThread.currentPackageName());
@@ -1980,10 +1976,9 @@ public final class DisplayManager {
    /**
     * Unregister a display topology listener.
     * @param listener The listener to unregister
     *
     * @hide
     */
    @RequiresPermission(MANAGE_DISPLAYS)
    @FlaggedApi(Flags.FLAG_DISPLAY_TOPOLOGY_API)
    public void unregisterTopologyListener(@NonNull Consumer<DisplayTopology> listener) {
        mGlobal.unregisterTopologyListener(listener);
    }
+9 −16
Original line number Diff line number Diff line
@@ -24,7 +24,6 @@ import static android.hardware.display.DisplayTopology.TreeNode.POSITION_TOP;
import android.annotation.FlaggedApi;
import android.annotation.IntDef;
import android.annotation.Nullable;
import android.annotation.TestApi;
import android.graphics.PointF;
import android.graphics.RectF;
import android.os.Parcel;
@@ -42,7 +41,6 @@ import androidx.annotation.NonNull;
import com.android.internal.annotations.VisibleForTesting;
import com.android.server.display.feature.flags.Flags;

import java.io.PrintWriter;
import java.io.StringWriter;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@@ -58,11 +56,8 @@ import java.util.Queue;
/**
 * Represents the relative placement of extended displays.
 * Does not support concurrent calls, so a lock should be held when calling into this class.
 *
 * @hide
 */
@TestApi
@FlaggedApi(Flags.FLAG_DISPLAY_TOPOLOGY)
@FlaggedApi(Flags.FLAG_DISPLAY_TOPOLOGY_API)
public final class DisplayTopology implements Parcelable {
    private static final String TAG = "DisplayTopology";
    private static final float EPSILON = 0.0001f;
@@ -590,19 +585,18 @@ public final class DisplayTopology implements Parcelable {
     * @hide
     * @param pw The stream to dump information to.
     */
    public void dump(PrintWriter pw) {
    public void dump(IndentingPrintWriter pw) {
        pw.println("DisplayTopology:");
        pw.println("--------------------");
        IndentingPrintWriter ipw = new IndentingPrintWriter(pw);
        ipw.increaseIndent();
        pw.increaseIndent();

        ipw.println("mPrimaryDisplayId: " + mPrimaryDisplayId);
        pw.println("mPrimaryDisplayId: " + mPrimaryDisplayId);

        ipw.println("Topology tree:");
        pw.println("Topology tree:");
        if (mRoot != null) {
            ipw.increaseIndent();
            mRoot.dump(ipw);
            ipw.decreaseIndent();
            pw.increaseIndent();
            mRoot.dump(pw);
            pw.decreaseIndent();
        }
    }

@@ -622,8 +616,7 @@ public final class DisplayTopology implements Parcelable {
    @Override
    public String toString() {
        StringWriter out = new StringWriter();
        PrintWriter writer = new PrintWriter(out);
        dump(writer);
        dump(new IndentingPrintWriter(out));
        return out.toString();
    }

+10 −0
Original line number Diff line number Diff line
@@ -21,6 +21,7 @@ import static android.Manifest.permission.CONTROL_DISPLAY_BRIGHTNESS;
import static android.hardware.flags.Flags.FLAG_OVERLAYPROPERTIES_CLASS_API;
import static android.util.TypedValue.COMPLEX_UNIT_DIP;

import static com.android.server.display.feature.flags.Flags.FLAG_DISPLAY_TOPOLOGY_API;
import static com.android.server.display.feature.flags.Flags.FLAG_ENABLE_GET_SUPPORTED_REFRESH_RATES;
import static com.android.server.display.feature.flags.Flags.FLAG_HIGHEST_HDR_SDR_RATIO_API;
import static com.android.server.display.feature.flags.Flags.FLAG_ENABLE_HAS_ARR_SUPPORT;
@@ -841,6 +842,15 @@ public final class Display {
        return mType;
    }

    /**
     * Check if this is a built-in display.
     */
    @FlaggedApi(FLAG_DISPLAY_TOPOLOGY_API)
    public boolean isInternal() {
        return mType == TYPE_INTERNAL;
    }


    /**
     * Gets the display address, or null if none.
     * Interpretation varies by display type.
Loading