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

Commit 2beb8f0e authored by Daniel Zheng's avatar Daniel Zheng
Browse files

update displaySnapshot

update displaySnapshot to have screenPartStatus.

Flag: com.android.tradeinmode.flags.trade_in_mode_2025q4
Test: th
Change-Id: I2a0418f24a07b87618108e2c8d2bc899c0b3df9d
parent 302cd56d
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@
#include <optional>

#include <ui/DeviceProductInfo.h>
#include <ui/DisplayIdentification.h>
#include <ui/Rotation.h>

namespace android::ui {
@@ -32,6 +33,7 @@ struct StaticDisplayInfo {
    float density = 0.f;
    bool secure = false;
    std::optional<DeviceProductInfo> deviceProductInfo;
    android::ScreenPartStatus screenPartStatus;
    Rotation installOrientation = ROTATION_0;
};

+3 −0
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@
#include <algorithm>
#include <functional>
#include <utility>
#include <ui/DisplayIdentification.h>

#include <ftl/algorithm.h>
#include <ftl/enum.h>
@@ -27,11 +28,13 @@
namespace android::display {

DisplaySnapshot::DisplaySnapshot(PhysicalDisplayId displayId, uint8_t port,
                                 android::ScreenPartStatus screenPartStatus,
                                 ui::DisplayConnectionType connectionType,
                                 DisplayModes&& displayModes, ui::ColorModes&& colorModes,
                                 std::optional<DeviceProductInfo>&& deviceProductInfo)
      : mDisplayId(displayId),
        mPort(port),
        mScreenPartStatus(screenPartStatus),
        mConnectionType(connectionType),
        mDisplayModes(std::move(displayModes)),
        mColorModes(std::move(colorModes)),
+6 −2
Original line number Diff line number Diff line
@@ -22,6 +22,7 @@
#include <ui/ColorMode.h>
#include <ui/DisplayId.h>
#include <ui/StaticDisplayInfo.h>
#include <ui/DisplayIdentification.h>

#include "DisplayHardware/DisplayMode.h"
#include "Utils/Dumper.h"
@@ -31,14 +32,16 @@ namespace android::display {
// Immutable state of a physical display, captured on hotplug.
class DisplaySnapshot {
public:
    DisplaySnapshot(PhysicalDisplayId, uint8_t, ui::DisplayConnectionType, DisplayModes&&,
                    ui::ColorModes&&, std::optional<DeviceProductInfo>&&);
    DisplaySnapshot(PhysicalDisplayId, uint8_t, android::ScreenPartStatus,
                    ui::DisplayConnectionType, DisplayModes&&, ui::ColorModes&&,
                    std::optional<DeviceProductInfo>&&);

    DisplaySnapshot(const DisplaySnapshot&) = delete;
    DisplaySnapshot(DisplaySnapshot&&) = default;

    PhysicalDisplayId displayId() const { return mDisplayId; }
    uint8_t port() const { return mPort; }
    android::ScreenPartStatus screenPartStatus() const { return mScreenPartStatus; }
    ui::DisplayConnectionType connectionType() const { return mConnectionType; }

    std::optional<DisplayModeId> translateModeId(hal::HWConfigId) const;
@@ -54,6 +57,7 @@ public:
private:
    const PhysicalDisplayId mDisplayId;
    const uint8_t mPort;
    const android::ScreenPartStatus mScreenPartStatus;
    const ui::DisplayConnectionType mConnectionType;

    // Effectively const except in move constructor.
+8 −4
Original line number Diff line number Diff line
@@ -1178,6 +1178,7 @@ status_t SurfaceFlinger::getStaticDisplayInfo(int64_t displayId, ui::StaticDispl
    info->connectionType = snapshot.connectionType();
    info->port = snapshot.port();
    info->deviceProductInfo = snapshot.deviceProductInfo();
    info->screenPartStatus = snapshot.screenPartStatus();

    if (mEmulatedDisplayDensity) {
        info->density = mEmulatedDisplayDensity;
@@ -3782,6 +3783,7 @@ std::optional<DisplayModeId> SurfaceFlinger::processHotplugConnect(PhysicalDispl
        const auto& display = displayOpt->get();
        const auto& snapshot = display.snapshot();
        const uint8_t port = snapshot.port();
        const android::ScreenPartStatus screenPartStatus = snapshot.screenPartStatus();

        std::optional<DeviceProductInfo> deviceProductInfo;
        if (getHwComposer().updatesDeviceProductInfoOnHotplugReconnect()) {
@@ -3794,8 +3796,9 @@ std::optional<DisplayModeId> SurfaceFlinger::processHotplugConnect(PhysicalDispl
        // display on reconnect.
        const auto it =
                mPhysicalDisplays.try_replace(displayId, display.token(), displayId, port,
                                              snapshot.connectionType(), std::move(displayModes),
                                              std::move(colorModes), std::move(deviceProductInfo));
                                              screenPartStatus, snapshot.connectionType(),
                                              std::move(displayModes), std::move(colorModes),
                                              std::move(deviceProductInfo));

        auto& state = mCurrentState.displays.editValueFor(it->second.token());
        state.sequenceId = DisplayDeviceState{}.sequenceId; // Generate new sequenceId.
@@ -3812,8 +3815,8 @@ std::optional<DisplayModeId> SurfaceFlinger::processHotplugConnect(PhysicalDispl
    const ui::DisplayConnectionType connectionType =
            getHwComposer().getDisplayConnectionType(displayId);

    mPhysicalDisplays.try_emplace(displayId, token, displayId, info.port, connectionType,
                                  std::move(displayModes), std::move(colorModes),
    mPhysicalDisplays.try_emplace(displayId, token, displayId, info.port, info.screenPartStatus,
                                  connectionType, std::move(displayModes), std::move(colorModes),
                                  std::move(info.deviceProductInfo));

    DisplayDeviceState state;
@@ -8965,6 +8968,7 @@ binder::Status SurfaceComposerAIDL::getStaticDisplayInfo(int64_t displayId,
        outInfo->density = info.density;
        outInfo->secure = info.secure;
        outInfo->installOrientation = static_cast<gui::Rotation>(info.installOrientation);
        outInfo->screenPartStatus = static_cast<uint8_t>(info.screenPartStatus);

        if (const std::optional<DeviceProductInfo> dpi = info.deviceProductInfo) {
            gui::DeviceProductInfo dinfo;
+4 −1
Original line number Diff line number Diff line
@@ -30,6 +30,7 @@
#include <ftl/fake_guard.h>
#include <gmock/gmock.h>
#include <gtest/gtest.h>
#include <ui/DisplayIdentification.h>

#define EXPECT_DISPLAY_MODE_REQUEST(expected, requestOpt)                               \
    ASSERT_TRUE(requestOpt);                                                            \
@@ -72,7 +73,9 @@ public:
        ASSERT_TRUE(infoOpt);

        mDisplayId = infoOpt->id;
        mDisplaySnapshotOpt.emplace(mDisplayId, infoOpt->port, ui::DisplayConnectionType::Internal,
        mDisplaySnapshotOpt.emplace(mDisplayId, infoOpt->port,
                                    android::ScreenPartStatus::UNSUPPORTED,
                                    ui::DisplayConnectionType::Internal,
                                    makeModes(kMode60, kMode90, kMode120), ui::ColorModes{},
                                    std::nullopt);

Loading