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

Commit 7ee4cd55 authored by Mathias Agopian's avatar Mathias Agopian
Browse files

fix a bug that caused the off animation to not show sometimes

this happened when the overlays were in use, since the animation
is rendered in the FB and the FB is not used.

we now have a way to turn hwc off temporarily.

Change-Id: I3385f0c25bb9cc91948e7b26e7cd31ed18c36ace
parent b24c865f
Loading
Loading
Loading
Loading
+15 −2
Original line number Diff line number Diff line
@@ -108,9 +108,22 @@ status_t HWComposer::commit() const {
}

status_t HWComposer::release() const {
    if (mHwc) {
        int err = mHwc->set(mHwc, NULL, NULL, NULL);
        return (status_t)err;
    }
    return NO_ERROR;
}

status_t HWComposer::disable() {
    if (mHwc) {
        free(mList);
        mList = NULL;
        int err = mHwc->prepare(mHwc, NULL);
        return (status_t)err;
    }
    return NO_ERROR;
}

size_t HWComposer::getNumLayers() const {
    return mList ? mList->numHwLayers : 0;
+3 −0
Original line number Diff line number Diff line
@@ -50,6 +50,9 @@ public:
    // Asks the HAL what it can do
    status_t prepare() const;

    // disable hwc until next createWorkList
    status_t disable();

    // commits the list
    status_t commit() const;

+6 −0
Original line number Diff line number Diff line
@@ -2113,6 +2113,12 @@ status_t SurfaceFlinger::turnElectronBeamOffImplLocked(int32_t mode)
        // we're already off
        return NO_ERROR;
    }

    // turn off hwc while we're doing the animation
    hw.getHwComposer().disable();
    // and make sure to turn it back on (if needed) next time we compose
    invalidateHwcGeometry();

    if (mode & ISurfaceComposer::eElectronBeamAnimationOff) {
        electronBeamOffAnimationImplLocked();
    }