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

Commit 70c4e750 authored by Android Build Coastguard Worker's avatar Android Build Coastguard Worker
Browse files

Snap for 8642511 from 112906ba to tm-release

Change-Id: Ie4398a99d6b3bc0a2814a272a951d364948b6756
parents d675de62 112906ba
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -15,8 +15,8 @@
 */
package android.hardware.camera2.extension;

import android.hardware.camera2.extension.Size;
import android.hardware.camera2.extension.OutputConfigId;
import android.hardware.camera2.extension.Size;
import android.view.Surface;

/** @hide */
@@ -35,5 +35,5 @@ parcelable CameraOutputConfig
    OutputConfigId outputId;
    int surfaceGroupId;
    String physicalCameraId;
    List<OutputConfigId> surfaceSharingOutputConfigs;
    List<CameraOutputConfig> sharedSurfaceConfigs;
}
+46 −48
Original line number Diff line number Diff line
@@ -217,60 +217,30 @@ public final class CameraAdvancedExtensionSessionImpl extends CameraExtensionSes
        CameraSessionConfig sessionConfig = mSessionProcessor.initSession(mCameraDevice.getId(),
                previewSurface, captureSurface);
        List<CameraOutputConfig> outputConfigs = sessionConfig.outputConfigs;
        // map camera output ids to output configurations
        HashMap<Integer, OutputConfiguration> cameraOutputs = new HashMap<>();
        ArrayList<OutputConfiguration> outputList = new ArrayList<>();
        for (CameraOutputConfig output : outputConfigs) {
            OutputConfiguration cameraOutput = null;
            switch(output.type) {
                case CameraOutputConfig.TYPE_SURFACE:
                    if (output.surface == null) {
                        Log.w(TAG, "Unsupported client output id: " + output.outputId.id +
                                ", skipping!");
                        continue;
                    }
                    cameraOutput = new OutputConfiguration(output.surfaceGroupId,
                            output.surface);
                    break;
                case CameraOutputConfig.TYPE_IMAGEREADER:
                    if ((output.imageFormat == ImageFormat.UNKNOWN) || (output.size.width <= 0) ||
                            (output.size.height <= 0)) {
                        Log.w(TAG, "Unsupported client output id: " + output.outputId.id +
                                ", skipping!");
            Surface outputSurface = initializeSurfrace(output);
            if (outputSurface == null) {
                continue;
            }
                    ImageReader reader = ImageReader.newInstance(output.size.width,
                            output.size.height, output.imageFormat, output.capacity);
                    mReaderMap.put(output.outputId.id, reader);
                    cameraOutput = new OutputConfiguration(output.surfaceGroupId,
                            reader.getSurface());
                    break;
                case CameraOutputConfig.TYPE_MULTIRES_IMAGEREADER:
                    // Support for multi-resolution outputs to be added in future releases
                default:
                    throw new IllegalArgumentException("Unsupported output config type: " +
                            output.type);
            }
            cameraOutput.setPhysicalCameraId(output.physicalCameraId);
            cameraOutputs.put(output.outputId.id, cameraOutput);
        }
            OutputConfiguration cameraOutput = new OutputConfiguration(output.surfaceGroupId,
                    outputSurface);

        ArrayList<OutputConfiguration> outputList = new ArrayList<>();
        for (CameraOutputConfig output : outputConfigs) {
            if (!cameraOutputs.containsKey(output.outputId.id)) {
                // Shared surface already removed by a previous iteration
            if ((output.sharedSurfaceConfigs != null) && !output.sharedSurfaceConfigs.isEmpty()) {
                cameraOutput.enableSurfaceSharing();
                for (CameraOutputConfig sharedOutputConfig : output.sharedSurfaceConfigs) {
                    Surface sharedSurface = initializeSurfrace(sharedOutputConfig);
                    if (sharedSurface == null) {
                        continue;
                    }
            OutputConfiguration outConfig = cameraOutputs.get(output.outputId.id);
            if ((output.surfaceSharingOutputConfigs != null) &&
                    !output.surfaceSharingOutputConfigs.isEmpty()) {
                outConfig.enableSurfaceSharing();
                for (OutputConfigId outputId : output.surfaceSharingOutputConfigs) {
                    outConfig.addSurface(cameraOutputs.get(outputId.id).getSurface());
                    cameraOutputs.remove(outputId.id);
                    cameraOutput.addSurface(sharedSurface);
                    mCameraConfigMap.put(sharedSurface, sharedOutputConfig);
                }
            }
            outputList.add(outConfig);
            mCameraConfigMap.put(outConfig.getSurface(), output);

            cameraOutput.setPhysicalCameraId(output.physicalCameraId);
            outputList.add(cameraOutput);
            mCameraConfigMap.put(cameraOutput.getSurface(), output);
        }

        SessionConfiguration sessionConfiguration = new SessionConfiguration(
@@ -995,4 +965,32 @@ public final class CameraAdvancedExtensionSessionImpl extends CameraExtensionSes
        CameraMetadataNative.update(ret.getNativeMetadata(), request.parameters);
        return ret;
    }

    private Surface initializeSurfrace(CameraOutputConfig output) {
        switch(output.type) {
            case CameraOutputConfig.TYPE_SURFACE:
                if (output.surface == null) {
                    Log.w(TAG, "Unsupported client output id: " + output.outputId.id +
                            ", skipping!");
                    return null;
                }
                return output.surface;
            case CameraOutputConfig.TYPE_IMAGEREADER:
                if ((output.imageFormat == ImageFormat.UNKNOWN) || (output.size.width <= 0) ||
                        (output.size.height <= 0)) {
                    Log.w(TAG, "Unsupported client output id: " + output.outputId.id +
                            ", skipping!");
                    return null;
                }
                ImageReader reader = ImageReader.newInstance(output.size.width,
                        output.size.height, output.imageFormat, output.capacity);
                mReaderMap.put(output.outputId.id, reader);
                return reader.getSurface();
            case CameraOutputConfig.TYPE_MULTIRES_IMAGEREADER:
                // Support for multi-resolution outputs to be added in future releases
            default:
                throw new IllegalArgumentException("Unsupported output config type: " +
                        output.type);
        }
    }
}
+13 −1
Original line number Diff line number Diff line
@@ -108,6 +108,17 @@ public final class DisplayManager {
    public static final String DISPLAY_CATEGORY_PRESENTATION =
            "android.hardware.display.category.PRESENTATION";

    /**
     * Display category: All displays, including disabled displays.
     * <p>
     * This returns all displays, including currently disabled and inaccessible displays.
     *
     * @see #getDisplays(String)
     * @hide
     */
    public static final String DISPLAY_CATEGORY_ALL_INCLUDING_DISABLED =
            "android.hardware.display.category.ALL_INCLUDING_DISABLED";

    /** @hide **/
    @IntDef(prefix = "VIRTUAL_DISPLAY_FLAG_", flag = true, value = {
            VIRTUAL_DISPLAY_FLAG_PUBLIC,
@@ -552,7 +563,8 @@ public final class DisplayManager {
        final int[] displayIds = mGlobal.getDisplayIds();
        synchronized (mLock) {
            try {
                if (category == null) {
                if (category == null
                        || DISPLAY_CATEGORY_ALL_INCLUDING_DISABLED.equals(category)) {
                    addAllDisplaysLocked(mTempDisplays, displayIds);
                } else if (category.equals(DISPLAY_CATEGORY_PRESENTATION)) {
                    addPresentationDisplaysLocked(mTempDisplays, displayIds, Display.TYPE_WIFI);
+8 −0
Original line number Diff line number Diff line
@@ -506,6 +506,14 @@ public final class AutofillManager {
    public static final String DEVICE_CONFIG_AUTOFILL_DIALOG_HINTS =
            "autofill_dialog_hints";

    /**
     * Sets a value of delay time to show up the inline tooltip view.
     *
     * @hide
     */
    public static final String DEVICE_CONFIG_AUTOFILL_TOOLTIP_SHOW_UP_DELAY =
            "autofill_inline_tooltip_first_show_delay";

    private static final String DIALOG_HINTS_DELIMITER = ":";

    /** @hide */
+17 −0
Original line number Diff line number Diff line
@@ -1002,6 +1002,7 @@ public class ChooserActivity extends ResolverActivity implements
        mMaxTargetsPerRow = getResources().getInteger(R.integer.config_chooser_max_targets_per_row);
        adjustPreviewWidth(newConfig.orientation, null);
        updateStickyContentPreview();
        updateTabPadding();
    }

    private boolean shouldDisplayLandscape(int orientation) {
@@ -1024,6 +1025,20 @@ public class ChooserActivity extends ResolverActivity implements
        updateLayoutWidth(R.id.content_preview_file_layout, width, parent);
    }

    private void updateTabPadding() {
        if (shouldShowTabs()) {
            View tabs = findViewById(R.id.tabs);
            float iconSize = getResources().getDimension(R.dimen.chooser_icon_size);
            // The entire width consists of icons or padding. Divide the item padding in half to get
            // paddingHorizontal.
            float padding = (tabs.getWidth() - mMaxTargetsPerRow * iconSize)
                    / mMaxTargetsPerRow / 2;
            // Subtract the margin the buttons already have.
            padding -= getResources().getDimension(R.dimen.resolver_profile_tab_margin);
            tabs.setPadding((int) padding, 0, (int) padding, 0);
        }
    }

    private void updateLayoutWidth(int layoutResourceId, int width, View parent) {
        View view = parent.findViewById(layoutResourceId);
        if (view != null && view.getLayoutParams() != null) {
@@ -2480,6 +2495,8 @@ public class ChooserActivity extends ResolverActivity implements
                recyclerView.setAdapter(gridAdapter);
                ((GridLayoutManager) recyclerView.getLayoutManager()).setSpanCount(
                        mMaxTargetsPerRow);

                updateTabPadding();
            }

            UserHandle currentUserHandle = mChooserMultiProfilePagerAdapter.getCurrentUserHandle();
Loading