package com.glview.hwui; import com.glview.hwui.op.OpFactory; import com.glview.pool.Poolable; /** * Record operations by canvas {@link GLRecordingCanvas}, * and replayed in render thread {@link RenderThread}. * Called by RenderNode {@link RenderNode#replay(GLCanvas)}. * * @author lijing.lj */ public abstract class CanvasOp implements Poolable { /* * Used to build the display list. */ public CanvasOp mNext; /* * Replay the recorded operation, this method do the real drawing. */ abstract public void replay(GLCanvas canvas); abstract protected void recycleInner(); /* * The display list has been changed or destroyed, so we recycle unused resources. */ public final void recycle() { mNext = null; recycleInner(); // Cache to CanvasOpFactory, so it can be reuse. OpFactory.get().push(this); } }