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

Commit 2bf68f06 authored by Romain Guy's avatar Romain Guy
Browse files

Deferred layer updates

Change-Id: I83d9e564fe274db658dcee9e0cc5bbf9223ebb49
parent d8f45c16
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -157,6 +157,8 @@ class GLES20Canvas extends HardwareCanvas {
    static native void nDestroyLayer(int layerId);
    static native void nDestroyLayerDeferred(int layerId);
    static native void nFlushLayer(int layerId);
    static native void nUpdateRenderLayer(int layerId, int renderer, int displayList,
            int left, int top, int right, int bottom);
    static native boolean nCopyLayer(int layerId, int bitmap);

    ///////////////////////////////////////////////////////////////////////////
@@ -191,6 +193,13 @@ class GLES20Canvas extends HardwareCanvas {
    private static native int nGetMaximumTextureWidth();
    private static native int nGetMaximumTextureHeight();

    /**
     * Returns the native OpenGLRenderer object.
     */
    int getRenderer() {
        return mRenderer;
    }

    ///////////////////////////////////////////////////////////////////////////
    // Setup
    ///////////////////////////////////////////////////////////////////////////
+8 −0
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@ package android.view;

import android.graphics.Canvas;
import android.graphics.Matrix;
import android.graphics.Rect;

/**
 * An OpenGL ES 2.0 implementation of {@link HardwareLayer}. This
@@ -95,4 +96,11 @@ class GLES20RenderLayer extends GLES20Layer {
    @Override
    void setTransform(Matrix matrix) {
    }

    @Override
    void redraw(DisplayList displayList, Rect dirtyRect) {
        GLES20Canvas.nUpdateRenderLayer(mLayer, mCanvas.getRenderer(),
                ((GLES20DisplayList) displayList).getNativeDisplayList(),
                dirtyRect.left, dirtyRect.top, dirtyRect.right, dirtyRect.bottom);
    }
}
+5 −0
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@ package android.view;

import android.graphics.Canvas;
import android.graphics.Matrix;
import android.graphics.Rect;
import android.graphics.SurfaceTexture;

/**
@@ -81,4 +82,8 @@ class GLES20TextureLayer extends GLES20Layer {
    void setTransform(Matrix matrix) {
        GLES20Canvas.nSetTextureLayerTransform(mLayer, matrix.native_instance);
    }

    @Override
    void redraw(DisplayList displayList, Rect dirtyRect) {
    }
}
+10 −0
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@ package android.view;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Matrix;
import android.graphics.Rect;

/**
 * A hardware layer can be used to render graphics operations into a hardware
@@ -163,4 +164,13 @@ abstract class HardwareLayer {
     * @param matrix The transform to apply to the layer.
     */
    abstract void setTransform(Matrix matrix);

    /**
     * Specifies the display list to use to refresh the layer.
     * 
     * @param displayList The display list containing the drawing commands to
     *                    execute in this layer
     * @param dirtyRect The dirty region of the layer that needs to be redrawn
     */
    abstract void redraw(DisplayList displayList, Rect dirtyRect);
}
+1 −1
Original line number Diff line number Diff line
@@ -315,7 +315,7 @@ public class TextureView extends View {
    }

    @Override
    HardwareLayer getHardwareLayer() {
    HardwareLayer getHardwareLayer(boolean immediateRefresh) {
        if (mLayer == null) {
            if (mAttachInfo == null || mAttachInfo.mHardwareRenderer == null) {
                return null;
Loading