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

Commit cafa312b authored by Mathias Agopian's avatar Mathias Agopian Committed by Android Git Automerger
Browse files

am 947bbc91: am a0f40033: Merge "fix [3385504] Surface flinger hang when...

am 947bbc91: am a0f40033: Merge "fix [3385504] Surface flinger hang when adding dim surface" into honeycomb

* commit '947bbc914a3c6723dcd8ff1fcca2fc61e557bacc':
  fix [3385504] Surface flinger hang when adding dim surface
parents d7327866 aebc3fa7
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -563,10 +563,15 @@ sp<LayerBaseClient::Surface> LayerBaseClient::getSurface()
    if (s == 0) {
        s = createSurface();
        mClientSurface = s;
        mClientSurfaceBinder = s->asBinder();
    }
    return s;
}

wp<IBinder> LayerBaseClient::getSurfaceBinder() const {
    return mClientSurfaceBinder;
}

sp<LayerBaseClient::Surface> LayerBaseClient::createSurface() const
{
    return new Surface(mFlinger, mIdentity,
+2 −0
Original line number Diff line number Diff line
@@ -285,6 +285,7 @@ public:
    virtual ~LayerBaseClient();

            sp<Surface> getSurface();
            wp<IBinder> getSurfaceBinder() const;
    virtual sp<Surface> createSurface() const;
    virtual sp<LayerBaseClient> getLayerBaseClient() const {
        return const_cast<LayerBaseClient*>(this); }
@@ -325,6 +326,7 @@ protected:
private:
    mutable Mutex mLock;
    mutable wp<Surface> mClientSurface;
    wp<IBinder> mClientSurfaceBinder;
    const wp<Client> mClientRef;
    // only read
    const uint32_t mIdentity;
+8 −2
Original line number Diff line number Diff line
@@ -67,8 +67,14 @@ void LayerDim::onDraw(const Region& clip) const
        const GLfloat alpha = s.alpha/255.0f;
        const uint32_t fbHeight = hw.getHeight();
        glDisable(GL_DITHER);

        if (s.alpha == 0xFF) {
            glDisable(GL_BLEND);
        } else {
            glEnable(GL_BLEND);
            glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA);
        }

        glColor4f(0, 0, 0, alpha);

#if defined(GL_OES_EGL_image_external)
+1 −1
Original line number Diff line number Diff line
@@ -1088,7 +1088,7 @@ status_t SurfaceFlinger::removeLayer_l(const sp<LayerBase>& layerBase)
{
    sp<LayerBaseClient> lbc(layerBase->getLayerBaseClient());
    if (lbc != 0) {
        mLayerMap.removeItem( lbc->getSurface()->asBinder() );
        mLayerMap.removeItem( lbc->getSurfaceBinder() );
    }
    ssize_t index = mCurrentState.layersSortedByZ.remove(layerBase);
    if (index >= 0) {