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

Commit 846a5339 authored by Romain Guy's avatar Romain Guy
Browse files

Update layers' opaque property when needed

Before this change, changing a View's opacity would not be reflected
by hardware layers. This could cause layers to retain their previous
opacity.

Change-Id: Iba2c8b4242deca021651df9324cc7c585a64653d
parent 053a82cc
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -151,6 +151,7 @@ class GLES20Canvas extends HardwareCanvas {
    static native int nCreateTextureLayer(boolean opaque, int[] layerInfo);
    static native int nCreateLayer(int width, int height, boolean isOpaque, int[] layerInfo);
    static native void nResizeLayer(int layerId, int width, int height, int[] layerInfo);
    static native void nSetOpaqueLayer(int layerId, boolean isOpaque);
    static native void nUpdateTextureLayer(int layerId, int width, int height, boolean opaque,
            SurfaceTexture surface);
    static native void nSetTextureLayerTransform(int layerId, int matrix);
+0 −5
Original line number Diff line number Diff line
@@ -47,11 +47,6 @@ abstract class GLES20Layer extends HardwareLayer {
        return GLES20Canvas.nCopyLayer(mLayer, bitmap.mNativeBitmap);
    }

    @Override
    void update(int width, int height, boolean isOpaque) {
        super.update(width, height, isOpaque);
    }

    @Override
    void destroy() {
        if (mFinalizer != null) {
+6 −0
Original line number Diff line number Diff line
@@ -70,6 +70,12 @@ class GLES20RenderLayer extends GLES20Layer {
        }
    }

    @Override
    void setOpaque(boolean isOpaque) {
        mOpaque = isOpaque;
        GLES20Canvas.nSetOpaqueLayer(mLayer, isOpaque);
    }

    @Override
    HardwareCanvas getCanvas() {
        return mCanvas;
+5 −6
Original line number Diff line number Diff line
@@ -42,12 +42,6 @@ class GLES20TextureLayer extends GLES20Layer {
        }        
    }

    GLES20TextureLayer(SurfaceTexture surface, boolean isOpaque) {
        this(isOpaque);
        mSurface = surface;
        mSurface.attachToGLContext(mTexture);
    }

    @Override
    boolean isValid() {
        return mLayer != 0 && mTexture != 0;
@@ -92,6 +86,11 @@ class GLES20TextureLayer extends GLES20Layer {
        GLES20Canvas.nUpdateTextureLayer(mLayer, width, height, isOpaque, mSurface);
    }

    @Override
    void setOpaque(boolean isOpaque) {
        throw new UnsupportedOperationException("Use update(int, int, boolean) instead");
    }

    @Override
    void setTransform(Matrix matrix) {
        GLES20Canvas.nSetTextureLayerTransform(mLayer, matrix.native_instance);
+7 −0
Original line number Diff line number Diff line
@@ -106,6 +106,13 @@ abstract class HardwareLayer {
        return mOpaque;
    }

    /**
     * Sets whether or not this layer should be considered opaque.
     * 
     * @param isOpaque True if the layer is opaque, false otherwise
     */
    abstract void setOpaque(boolean isOpaque);

    /**
     * Indicates whether this layer can be rendered.
     * 
Loading