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

Commit 739e34a3 authored by Romain Guy's avatar Romain Guy Committed by Android (Google) Code Review
Browse files

Merge "Don't crash Launcher on config change." into honeycomb

parents 1362c94b 43ccf466
Loading
Loading
Loading
Loading
+10 −4
Original line number Diff line number Diff line
@@ -129,7 +129,7 @@ DisplayList::~DisplayList() {
    mBitmapResources.clear();

    for (size_t i = 0; i < mShaders.size(); i++) {
        delete mShaders.itemAt(i);
        caches.resourceCache.decrementRefcount(mShaders.itemAt(i));
    }
    mShaders.clear();

@@ -181,7 +181,9 @@ void DisplayList::initFromDisplayListRenderer(const DisplayListRenderer& recorde

    const Vector<SkiaShader*> &shaders = recorder.getShaders();
    for (size_t i = 0; i < shaders.size(); i++) {
        mShaders.add(shaders.itemAt(i));
        SkiaShader* shader = shaders.itemAt(i);
        mShaders.add(shader);
        caches.resourceCache.incrementRefcount(shader);
    }

    const Vector<SkPaint*> &paints = recorder.getPaints();
@@ -405,10 +407,14 @@ void DisplayListRenderer::reset() {
    }
    mBitmapResources.clear();

    mPaints.clear();
    mPaintMap.clear();
    for (size_t i = 0; i < mShaders.size(); i++) {
       caches.resourceCache.decrementRefcount(mShaders.itemAt(i));
    }
    mShaders.clear();
    mShaderMap.clear();

    mPaints.clear();
    mPaintMap.clear();
    mMatrices.clear();
}

+1 −0
Original line number Diff line number Diff line
@@ -417,6 +417,7 @@ private:
            shaderCopy = shader->copy();
            mShaderMap.add(shader, shaderCopy);
            mShaders.add(shaderCopy);
            Caches::getInstance().resourceCache.incrementRefcount(shaderCopy);
        }

        addInt((int) shaderCopy);
+26 −10
Original line number Diff line number Diff line
@@ -205,9 +205,12 @@ SkiaLinearGradientShader::~SkiaLinearGradientShader() {
SkiaShader* SkiaLinearGradientShader::copy() {
    SkiaLinearGradientShader* copy = new SkiaLinearGradientShader();
    copy->copyFrom(*this);
    copy->mBounds = mBounds;
    copy->mColors = mColors;
    copy->mPositions = mPositions;
    copy->mBounds = new float[4];
    memcpy(copy->mBounds, mBounds, sizeof(float) * 4);
    copy->mColors = new uint32_t[mCount];
    memcpy(copy->mColors, mColors, sizeof(uint32_t) * mCount);
    copy->mPositions = new float[mCount];
    memcpy(copy->mPositions, mPositions, sizeof(float) * mCount);
    copy->mCount = mCount;
    return copy;
}
@@ -270,8 +273,10 @@ SkiaCircularGradientShader::SkiaCircularGradientShader(float x, float y, float r
SkiaShader* SkiaCircularGradientShader::copy() {
    SkiaCircularGradientShader* copy = new SkiaCircularGradientShader();
    copy->copyFrom(*this);
    copy->mColors = mColors;
    copy->mPositions = mPositions;
    copy->mColors = new uint32_t[mCount];
    memcpy(copy->mColors, mColors, sizeof(uint32_t) * mCount);
    copy->mPositions = new float[mCount];
    memcpy(copy->mPositions, mPositions, sizeof(float) * mCount);
    copy->mCount = mCount;
    return copy;
}
@@ -317,8 +322,10 @@ SkiaSweepGradientShader::~SkiaSweepGradientShader() {
SkiaShader* SkiaSweepGradientShader::copy() {
    SkiaSweepGradientShader* copy = new SkiaSweepGradientShader();
    copy->copyFrom(*this);
    copy->mColors = mColors;
    copy->mPositions = mPositions;
    copy->mColors = new uint32_t[mCount];
    memcpy(copy->mColors, mColors, sizeof(uint32_t) * mCount);
    copy->mPositions = new float[mCount];
    memcpy(copy->mPositions, mPositions, sizeof(float) * mCount);
    copy->mCount = mCount;
    return copy;
}
@@ -362,15 +369,24 @@ void SkiaSweepGradientShader::updateTransforms(Program* program, const mat4& mod
SkiaComposeShader::SkiaComposeShader(SkiaShader* first, SkiaShader* second,
        SkXfermode::Mode mode, SkShader* key):
        SkiaShader(kCompose, key, SkShader::kClamp_TileMode, SkShader::kClamp_TileMode,
        NULL, first->blend() || second->blend()), mFirst(first), mSecond(second), mMode(mode) {
        NULL, first->blend() || second->blend()),
        mFirst(first), mSecond(second), mMode(mode), mCleanup(false) {
}

SkiaComposeShader::~SkiaComposeShader() {
    if (mCleanup) {
        delete mFirst;
        delete mSecond;
    }
}

SkiaShader* SkiaComposeShader::copy() {
    SkiaComposeShader* copy = new SkiaComposeShader();
    copy->copyFrom(*this);
    copy->mFirst = mFirst;
    copy->mSecond = mSecond;
    copy->mFirst = mFirst->copy();
    copy->mSecond = mSecond->copy();
    copy->mMode = mMode;
    copy->cleanup();
    return copy;
}

+8 −1
Original line number Diff line number Diff line
@@ -234,6 +234,7 @@ private:
 */
struct SkiaComposeShader: public SkiaShader {
    SkiaComposeShader(SkiaShader* first, SkiaShader* second, SkXfermode::Mode mode, SkShader* key);
    ~SkiaComposeShader();
    SkiaShader* copy();

    void set(TextureCache* textureCache, GradientCache* gradientCache);
@@ -243,12 +244,18 @@ struct SkiaComposeShader: public SkiaShader {
            GLuint* textureUnit);

private:
    SkiaComposeShader() {
    SkiaComposeShader(): mCleanup(false) {
    }

    void cleanup() {
        mCleanup = true;
    }

    SkiaShader* mFirst;
    SkiaShader* mSecond;
    SkXfermode::Mode mMode;

    bool mCleanup;
}; // struct SkiaComposeShader

}; // namespace uirenderer
+5 −5

File changed.

Contains only whitespace changes.