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

Commit 11cb6427 authored by Romain Guy's avatar Romain Guy
Browse files

Update layers in a single batch at the beginning of a frame

Bug #7186819

Change-Id: Ice5926dfedfb3be3a3064e65008dafa2852407da
parent 3e87eafc
Loading
Loading
Loading
Loading
+14 −1
Original line number Diff line number Diff line
@@ -148,6 +148,16 @@ class GLES20Canvas extends HardwareCanvas {
    // Hardware layers
    ///////////////////////////////////////////////////////////////////////////

    @Override
    void pushLayerUpdate(HardwareLayer layer) {
        nPushLayerUpdate(mRenderer, ((GLES20RenderLayer) layer).mLayer);
    }

    @Override
    void clearLayerUpdates() {
        nClearLayerUpdates(mRenderer);
    }

    static native int nCreateTextureLayer(boolean opaque, int[] layerInfo);
    static native int nCreateLayer(int width, int height, boolean isOpaque, int[] layerInfo);
    static native boolean nResizeLayer(int layerId, int width, int height, int[] layerInfo);
@@ -163,6 +173,9 @@ class GLES20Canvas extends HardwareCanvas {
            int left, int top, int right, int bottom);
    static native boolean nCopyLayer(int layerId, int bitmap);

    private static native void nClearLayerUpdates(int renderer);
    private static native void nPushLayerUpdate(int renderer, int layer);

    ///////////////////////////////////////////////////////////////////////////
    // Canvas management
    ///////////////////////////////////////////////////////////////////////////
+1 −1
Original line number Diff line number Diff line
@@ -110,7 +110,7 @@ class GLES20RenderLayer extends GLES20Layer {
    }

    @Override
    void redraw(DisplayList displayList, Rect dirtyRect) {
    void redrawLater(DisplayList displayList, Rect dirtyRect) {
        GLES20Canvas.nUpdateRenderLayer(mLayer, mCanvas.getRenderer(),
                ((GLES20DisplayList) displayList).getNativeDisplayList(),
                dirtyRect.left, dirtyRect.top, dirtyRect.right, dirtyRect.bottom);
+1 −1
Original line number Diff line number Diff line
@@ -98,6 +98,6 @@ class GLES20TextureLayer extends GLES20Layer {
    }

    @Override
    void redraw(DisplayList displayList, Rect dirtyRect) {
    void redrawLater(DisplayList displayList, Rect dirtyRect) {
    }
}
+16 −0
Original line number Diff line number Diff line
@@ -132,4 +132,20 @@ public abstract class HardwareCanvas extends Canvas {
     * @see #detachFunctor(int) 
     */
    abstract void attachFunctor(int functor);

    /**
     * Indicates that the specified layer must be updated as soon as possible.
     * 
     * @param layer The layer to update
     *
     * @see #clearLayerUpdates()
     */
    abstract void pushLayerUpdate(HardwareLayer layer);

    /**
     * Removes all enqueued layer updates.
     * 
     * @see #pushLayerUpdate(HardwareLayer) 
     */
    abstract void clearLayerUpdates();
}
+1 −1
Original line number Diff line number Diff line
@@ -203,5 +203,5 @@ abstract class HardwareLayer {
     *                    execute in this layer
     * @param dirtyRect The dirty region of the layer that needs to be redrawn
     */
    abstract void redraw(DisplayList displayList, Rect dirtyRect);
    abstract void redrawLater(DisplayList displayList, Rect dirtyRect);
}
Loading