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

Commit d77050a6 authored by Chet Haase's avatar Chet Haase Committed by The Android Automerger
Browse files

Assign default texture id of 0

Some logic depends on a default value of 0, which was not being
assigned.

Issue #7195815 chrome url bar is corrupted
Issue #7190656 Textures corrupted on mr1

Change-Id: I346b7b76e885bf8f04740e711fd88f917a5418c7
parent 3c508b4e
Loading
Loading
Loading
Loading
+7 −5
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@
#include <utils/Log.h>

#include "Layer.h"
#include "LayerRenderer.h"
#include "OpenGLRenderer.h"
#include "Caches.h"

@@ -46,14 +47,15 @@ Layer::~Layer() {
    if (mesh) delete mesh;
    if (meshIndices) delete meshIndices;
    if (colorFilter) Caches::getInstance().resourceCache.decrementRefcount(colorFilter);
    if (fbo) Caches::getInstance().fboCache.put(fbo);
    removeFbo();
    deleteTexture();
}

void Layer::freeResourcesLocked() {
    if (colorFilter) {
        Caches::getInstance().resourceCache.decrementRefcountLocked(colorFilter);
        colorFilter = NULL;
void Layer::removeFbo() {
    if (fbo) {
        LayerRenderer::flushLayer(this);
        Caches::getInstance().fboCache.put(fbo);
        fbo = 0;
    }
}

+1 −1
Original line number Diff line number Diff line
@@ -48,7 +48,7 @@ struct Layer {
    Layer(const uint32_t layerWidth, const uint32_t layerHeight);
    ~Layer();

    void freeResourcesLocked();
    void removeFbo();

    /**
     * Sets this layer's region to a rectangle. Computes the appropriate
+1 −7
Original line number Diff line number Diff line
@@ -299,13 +299,6 @@ void LayerRenderer::destroyLayer(Layer* layer) {
        LAYER_RENDERER_LOGD("Recycling layer, %dx%d fbo = %d",
                layer->getWidth(), layer->getHeight(), layer->getFbo());

        GLuint fbo = layer->getFbo();
        if (fbo) {
            flushLayer(layer);
            Caches::getInstance().fboCache.put(fbo);
            layer->setFbo(0);
        }

        if (!Caches::getInstance().layerCache.put(layer)) {
            LAYER_RENDERER_LOGD("  Destroyed!");
            Caches::getInstance().resourceCache.decrementRefcount(layer);
@@ -314,6 +307,7 @@ void LayerRenderer::destroyLayer(Layer* layer) {
#if DEBUG_LAYER_RENDERER
            Caches::getInstance().layerCache.dump();
#endif
            layer->removeFbo();
            layer->region.clear();
        }
    }
+2 −2
Original line number Diff line number Diff line
@@ -60,6 +60,8 @@ public:
    ANDROID_API static void destroyLayerDeferred(Layer* layer);
    ANDROID_API static bool copyLayer(Layer* layer, SkBitmap* bitmap);

    static void flushLayer(Layer* layer);

protected:
    virtual bool hasLayer();
    virtual Region* getRegion();
@@ -69,8 +71,6 @@ protected:
private:
    void generateMesh();

    static void flushLayer(Layer* layer);

    Layer* mLayer;
}; // class LayerRenderer

+2 −0
Original line number Diff line number Diff line
@@ -38,6 +38,8 @@ struct Texture {

        firstFilter = true;
        firstWrap = true;

        id = 0;
    }

    void setWrap(GLenum wrap, bool bindTexture = false, bool force = false,