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

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

Merge "Prevent crash when flushing the layers cache Bug #6258973"

parents 7eae9cb4 5c88fc74
Loading
Loading
Loading
Loading
+10 −2
Original line number Diff line number Diff line
@@ -69,10 +69,14 @@ void LayerCache::setMaxSize(uint32_t maxSize) {

void LayerCache::deleteLayer(Layer* layer) {
    if (layer) {
        LAYER_LOGD("Destroying layer %dx%d", layer->getWidth(), layer->getHeight());
        GLuint fbo = layer->getFbo();
        LAYER_LOGD("Destroying layer %dx%d, fbo %d", layer->getWidth(), layer->getHeight(), fbo);

        mSize -= layer->getWidth() * layer->getHeight() * 4;
        layer->deleteFbo();

        if (fbo) Caches::getInstance().fboCache.put(fbo);
        layer->deleteTexture();

        delete layer;
    }
}
@@ -174,6 +178,10 @@ bool LayerCache::put(Layer* layer) {
                    victim->layer.getHeight());
        }

        layer->deferredUpdateScheduled = false;
        layer->renderer = NULL;
        layer->displayList = NULL;

        LayerEntry entry(layer);

        mCache.add(entry);
+1 −0
Original line number Diff line number Diff line
@@ -309,6 +309,7 @@ void LayerRenderer::destroyLayer(Layer* layer) {
        if (fbo) {
            flushLayer(layer);
            Caches::getInstance().fboCache.put(fbo);
            layer->setFbo(0);
        }

        if (!Caches::getInstance().layerCache.put(layer)) {
+1 −0
Original line number Diff line number Diff line
@@ -678,6 +678,7 @@ void OpenGLRenderer::composeLayer(sp<Snapshot> current, sp<Snapshot> previous) {

        // Put the FBO name back in the cache, if it doesn't fit, it will be destroyed
        mCaches.fboCache.put(current->fbo);
        layer->setFbo(0);
    }

    dirtyClip();