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

Commit 1ad96aab authored by Ady Abraham's avatar Ady Abraham Committed by Automerger Merge Worker
Browse files

Merge "SF: add a solid background when hole punching a cached set" into sc-dev am: 4d56aeed

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

Change-Id: I0dfe5047f40d1bf57b9f94e972a54c14da968b63
parents f103edb5 4d56aeed
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -218,6 +218,7 @@ void CachedSet::render(renderengine::RenderEngine& renderEngine, TexturePool& te
    }

    renderengine::LayerSettings holePunchSettings;
    renderengine::LayerSettings holePunchBackgroundSettings;
    if (mHolePunchLayer) {
        auto clientCompositionList =
                mHolePunchLayer->getOutputLayer()->getLayerFE().prepareClientCompositionList(
@@ -232,6 +233,15 @@ void CachedSet::render(renderengine::RenderEngine& renderEngine, TexturePool& te
        holePunchSettings.alpha = 0.0f;
        holePunchSettings.name = std::string("hole punch layer");
        layerSettingsPointers.push_back(&holePunchSettings);

        // Add a solid background as the first layer in case there is no opaque
        // buffer behind the punch hole
        holePunchBackgroundSettings.alpha = 1.0f;
        holePunchBackgroundSettings.name = std::string("holePunchBackground");
        holePunchBackgroundSettings.geometry.boundaries = holePunchSettings.geometry.boundaries;
        holePunchBackgroundSettings.geometry.positionTransform =
                holePunchSettings.geometry.positionTransform;
        layerSettingsPointers.insert(layerSettingsPointers.begin(), &holePunchBackgroundSettings);
    }

    if (sDebugHighlighLayers) {
+33 −12
Original line number Diff line number Diff line
@@ -656,12 +656,22 @@ TEST_F(CachedSetTest, addHolePunch) {
                                base::unique_fd&&, base::unique_fd*) -> size_t {
        // If the highlight layer is enabled, it will increase the size by 1.
        // We're interested in the third layer either way.
        EXPECT_GE(layers.size(), 3u);
        const auto* holePunchSettings = layers[2];
        EXPECT_GE(layers.size(), 4u);
        {
            const auto* holePunchSettings = layers[3];
            EXPECT_EQ(nullptr, holePunchSettings->source.buffer.buffer);
            EXPECT_EQ(half3(0.0f, 0.0f, 0.0f), holePunchSettings->source.solidColor);
            EXPECT_TRUE(holePunchSettings->disableBlending);
            EXPECT_EQ(0.0f, holePunchSettings->alpha);
        }

        {
            const auto* holePunchBackgroundSettings = layers[0];
            EXPECT_EQ(nullptr, holePunchBackgroundSettings->source.buffer.buffer);
            EXPECT_EQ(half3(0.0f, 0.0f, 0.0f), holePunchBackgroundSettings->source.solidColor);
            EXPECT_FALSE(holePunchBackgroundSettings->disableBlending);
            EXPECT_EQ(1.0f, holePunchBackgroundSettings->alpha);
        }

        return NO_ERROR;
    };
@@ -706,12 +716,23 @@ TEST_F(CachedSetTest, addHolePunch_noBuffer) {
                                base::unique_fd&&, base::unique_fd*) -> size_t {
        // If the highlight layer is enabled, it will increase the size by 1.
        // We're interested in the third layer either way.
        EXPECT_GE(layers.size(), 3u);
        const auto* holePunchSettings = layers[2];
        EXPECT_GE(layers.size(), 4u);

        {
            const auto* holePunchSettings = layers[3];
            EXPECT_EQ(nullptr, holePunchSettings->source.buffer.buffer);
            EXPECT_EQ(half3(0.0f, 0.0f, 0.0f), holePunchSettings->source.solidColor);
            EXPECT_TRUE(holePunchSettings->disableBlending);
            EXPECT_EQ(0.0f, holePunchSettings->alpha);
        }

        {
            const auto* holePunchBackgroundSettings = layers[0];
            EXPECT_EQ(nullptr, holePunchBackgroundSettings->source.buffer.buffer);
            EXPECT_EQ(half3(0.0f, 0.0f, 0.0f), holePunchBackgroundSettings->source.solidColor);
            EXPECT_FALSE(holePunchBackgroundSettings->disableBlending);
            EXPECT_EQ(1.0f, holePunchBackgroundSettings->alpha);
        }

        return NO_ERROR;
    };