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

Commit 02bd384a authored by Ady Abraham's avatar Ady Abraham Committed by Automerger Merge Worker
Browse files

Merge "SF: trace display power state" into udc-dev am: 939387c1

parents 3e7a40d9 939387c1
Loading
Loading
Loading
Loading
+13 −1
Original line number Diff line number Diff line
@@ -182,11 +182,23 @@ void DisplayDevice::setPowerMode(hal::PowerMode mode) {
        getCompositionDisplay()->applyDisplayBrightness(true);
    }

    mPowerMode = mode;
    if (mPowerMode) {
        *mPowerMode = mode;
    } else {
        mPowerMode.emplace("PowerMode -" + to_string(getId()), mode);
    }

    getCompositionDisplay()->setCompositionEnabled(isPoweredOn());
}

void DisplayDevice::tracePowerMode() {
    // assign the same value for tracing
    if (mPowerMode) {
        const hal::PowerMode powerMode = *mPowerMode;
        *mPowerMode = powerMode;
    }
}

void DisplayDevice::enableLayerCaching(bool enable) {
    getCompositionDisplay()->setLayerCachingEnabled(enable);
}
+3 −1
Original line number Diff line number Diff line
@@ -175,6 +175,7 @@ public:
    std::optional<hardware::graphics::composer::hal::PowerMode> getPowerMode() const;
    void setPowerMode(hardware::graphics::composer::hal::PowerMode mode);
    bool isPoweredOn() const;
    void tracePowerMode();

    // Enables layer caching on this DisplayDevice
    void enableLayerCaching(bool enable);
@@ -276,7 +277,8 @@ private:
    static ui::Transform::RotationFlags sPrimaryDisplayRotationFlags;

    // Allow nullopt as initial power mode.
    std::optional<hardware::graphics::composer::hal::PowerMode> mPowerMode;
    using TracedPowerMode = TracedOrdinal<hardware::graphics::composer::hal::PowerMode>;
    std::optional<TracedPowerMode> mPowerMode;

    std::optional<float> mStagedBrightness;
    std::optional<float> mBrightness;
+1 −0
Original line number Diff line number Diff line
@@ -2563,6 +2563,7 @@ void SurfaceFlinger::composite(TimePoint frameTime, VsyncId vsyncId)
        if (!dropFrame) {
            refreshArgs.outputs.push_back(display->getCompositionDisplay());
        }
        display->tracePowerMode();
        displayIds.push_back(display->getId());
    }
    mPowerAdvisor->setDisplays(displayIds);
+17 −11
Original line number Diff line number Diff line
@@ -24,16 +24,24 @@
#include <cutils/compiler.h>
#include <utils/Trace.h>

namespace std {
namespace android {

namespace {
template <class Rep, class Period>
bool signbit(std::chrono::duration<Rep, Period> v) {
    return signbit(std::chrono::duration_cast<std::chrono::nanoseconds>(v).count());
    return std::signbit(std::chrono::duration_cast<std::chrono::nanoseconds>(v).count());
}
} // namespace std

namespace android {
template <typename Enum, typename std::enable_if<std::is_enum<Enum>::value>::type* = nullptr>
bool signbit(Enum e) {
    return std::signbit(static_cast<typename std::underlying_type<Enum>::type>(e));
}

template <typename T, typename std::enable_if<!std::is_enum<T>::value>::type* = nullptr>
bool signbit(T t) {
    return std::signbit(t);
}

namespace {
template <typename T>
int64_t to_int64(T v) {
    return int64_t(v);
@@ -49,14 +57,12 @@ template <typename T>
class TracedOrdinal {
public:
    static_assert(std::is_same<bool, T>() || (std::is_signed<T>() && std::is_integral<T>()) ||
                          std::is_same<std::chrono::nanoseconds, T>(),
                          std::is_same<std::chrono::nanoseconds, T>() || std::is_enum<T>(),
                  "Type is not supported. Please test it with systrace before adding "
                  "it to the list.");

    TracedOrdinal(std::string name, T initialValue)
          : mName(std::move(name)),
            mHasGoneNegative(std::signbit(initialValue)),
            mData(initialValue) {
          : mName(std::move(name)), mHasGoneNegative(signbit(initialValue)), mData(initialValue) {
        trace();
    }

@@ -66,7 +72,7 @@ public:

    TracedOrdinal& operator=(T other) {
        mData = other;
        mHasGoneNegative = mHasGoneNegative || std::signbit(mData);
        mHasGoneNegative = mHasGoneNegative || signbit(mData);
        trace();
        return *this;
    }
@@ -81,7 +87,7 @@ private:
            mNameNegative = mName + "Negative";
        }

        if (!std::signbit(mData)) {
        if (!signbit(mData)) {
            ATRACE_INT64(mName.c_str(), to_int64(mData));
            if (mHasGoneNegative) {
                ATRACE_INT64(mNameNegative.c_str(), 0);