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

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

Merge "CompositionEngine: Update blur state correctly" into sc-v2-dev am: 8ee4246c am: 8ab6e7de

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

Change-Id: I94d1dd0978fdb1e63e32ed28e21e1d4188490975
parents 3b37f10b 8ab6e7de
Loading
Loading
Loading
Loading
+13 −4
Original line number Original line Diff line number Diff line
@@ -420,8 +420,6 @@ void Layer::prepareBasicGeometryCompositionState() {


    compositionState->blendMode = static_cast<Hwc2::IComposerClient::BlendMode>(blendMode);
    compositionState->blendMode = static_cast<Hwc2::IComposerClient::BlendMode>(blendMode);
    compositionState->alpha = alpha;
    compositionState->alpha = alpha;
    compositionState->backgroundBlurRadius = drawingState.backgroundBlurRadius;
    compositionState->blurRegions = drawingState.blurRegions;
    compositionState->stretchEffect = getStretchEffect();
    compositionState->stretchEffect = getStretchEffect();
}
}


@@ -483,6 +481,9 @@ void Layer::preparePerFrameCompositionState() {
        compositionState->stretchEffect.hasEffect()) {
        compositionState->stretchEffect.hasEffect()) {
        compositionState->forceClientComposition = true;
        compositionState->forceClientComposition = true;
    }
    }
    // If there are no visible region changes, we still need to update blur parameters.
    compositionState->blurRegions = drawingState.blurRegions;
    compositionState->backgroundBlurRadius = drawingState.backgroundBlurRadius;
}
}


void Layer::prepareCursorCompositionState() {
void Layer::prepareCursorCompositionState() {
@@ -923,8 +924,11 @@ bool Layer::setCornerRadius(float cornerRadius) {


bool Layer::setBackgroundBlurRadius(int backgroundBlurRadius) {
bool Layer::setBackgroundBlurRadius(int backgroundBlurRadius) {
    if (mDrawingState.backgroundBlurRadius == backgroundBlurRadius) return false;
    if (mDrawingState.backgroundBlurRadius == backgroundBlurRadius) return false;

    // If we start or stop drawing blur then the layer's visibility state may change so increment
    // the magic sequence number.
    if (mDrawingState.backgroundBlurRadius == 0 || backgroundBlurRadius == 0) {
        mDrawingState.sequence++;
        mDrawingState.sequence++;
    }
    mDrawingState.backgroundBlurRadius = backgroundBlurRadius;
    mDrawingState.backgroundBlurRadius = backgroundBlurRadius;
    mDrawingState.modified = true;
    mDrawingState.modified = true;
    setTransactionFlags(eTransactionNeeded);
    setTransactionFlags(eTransactionNeeded);
@@ -957,6 +961,11 @@ bool Layer::setTransparentRegionHint(const Region& transparent) {
}
}


bool Layer::setBlurRegions(const std::vector<BlurRegion>& blurRegions) {
bool Layer::setBlurRegions(const std::vector<BlurRegion>& blurRegions) {
    // If we start or stop drawing blur then the layer's visibility state may change so increment
    // the magic sequence number.
    if (mDrawingState.blurRegions.size() == 0 || blurRegions.size() == 0) {
        mDrawingState.sequence++;
    }
    mDrawingState.blurRegions = blurRegions;
    mDrawingState.blurRegions = blurRegions;
    mDrawingState.modified = true;
    mDrawingState.modified = true;
    setTransactionFlags(eTransactionNeeded);
    setTransactionFlags(eTransactionNeeded);