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

Commit f403598e authored by Vishnu Nair's avatar Vishnu Nair Committed by Automerger Merge Worker
Browse files

Merge "Call Layer::getLayerDebugInfo from the main thread" into qt-dev am: f3f2130e

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/native/+/11973468

Change-Id: I17c0038e40757656834779531635d315104cabc5
parents d1a1d648 f3f2130e
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -611,7 +611,7 @@ public:
        return result;
    }

    virtual status_t getLayerDebugInfo(std::vector<LayerDebugInfo>* outLayers) const
    virtual status_t getLayerDebugInfo(std::vector<LayerDebugInfo>* outLayers)
    {
        if (!outLayers) {
            return UNEXPECTED_NULL;
+1 −1
Original line number Diff line number Diff line
@@ -310,7 +310,7 @@ public:
     *
     * Requires the ACCESS_SURFACE_FLINGER permission.
     */
    virtual status_t getLayerDebugInfo(std::vector<LayerDebugInfo>* outLayers) const = 0;
    virtual status_t getLayerDebugInfo(std::vector<LayerDebugInfo>* outLayers) = 0;

    virtual status_t getColorManagement(bool* outGetColorManagement) const = 0;

+1 −1
Original line number Diff line number Diff line
@@ -774,7 +774,7 @@ public:
        return NO_ERROR;
    }
    status_t injectVSync(nsecs_t /*when*/) override { return NO_ERROR; }
    status_t getLayerDebugInfo(std::vector<LayerDebugInfo>* /*layers*/) const override {
    status_t getLayerDebugInfo(std::vector<LayerDebugInfo>* /*layers*/) override {
        return NO_ERROR;
    }
    status_t getCompositionPreference(
+1 −1
Original line number Diff line number Diff line
@@ -1280,7 +1280,7 @@ LayerDebugInfo Layer::getLayerDebugInfo() const {
    LayerDebugInfo info;
    const State& ds = getDrawingState();
    info.mName = getName();
    sp<Layer> parent = getParent();
    sp<Layer> parent = mDrawingParent.promote();
    info.mParentName = (parent == nullptr ? std::string("none") : parent->getName().string());
    info.mType = std::string(getTypeId());
    info.mTransparentRegion = ds.activeTransparentRegion_legacy;
+6 −13
Original line number Diff line number Diff line
@@ -1265,22 +1265,15 @@ status_t SurfaceFlinger::injectVSync(nsecs_t when) {
    return NO_ERROR;
}

status_t SurfaceFlinger::getLayerDebugInfo(std::vector<LayerDebugInfo>* outLayers) const
status_t SurfaceFlinger::getLayerDebugInfo(std::vector<LayerDebugInfo>* outLayers)
        NO_THREAD_SAFETY_ANALYSIS {
    // Try to acquire a lock for 1s, fail gracefully
    const status_t err = mStateLock.timedLock(s2ns(1));
    const bool locked = (err == NO_ERROR);
    if (!locked) {
        ALOGE("LayerDebugInfo: SurfaceFlinger unresponsive (%s [%d]) - exit", strerror(-err), err);
        return TIMED_OUT;
    }

    outLayers->clear();
    mCurrentState.traverseInZOrder([&](Layer* layer) {
    postMessageSync(new LambdaMessage([&]() { 
            mDrawingState.traverseInZOrder([&](Layer* layer) {
            outLayers->push_back(layer->getLayerDebugInfo());
        });

    mStateLock.unlock();
    }));
    return NO_ERROR;
}

Loading