/**
  * Removes the child at the specified index from the display list.
  *
  * @param location index
  * @return this
  */
 public FPSTextureView removeChildAt(int location) {
   DisplayBase removed = mDisplayList.remove(location);
   if (removed != null) {
     removed.disable();
   }
   return this;
 }
  private void onTick() {

    synchronized (this) {
      Canvas canvas = this.lockCanvas();
      if (canvas == null) return;

      canvas.drawColor(Color.TRANSPARENT, PorterDuff.Mode.CLEAR);

      mDrawingList.addAll(mDisplayList);
      Collections.sort(mDrawingList);
      for (DisplayBase displayBase : mDrawingList) {
        if (displayBase == null) {
          continue;
        }
        displayBase.draw(canvas);
      }
      mDrawingList.clear();

      this.unlockCanvasAndPost(canvas);
    }
  }
 /**
  * Adds a child to the display list at the specified index, bumping children at equal or greater
  * indexes up one, and setting its parent to this Container
  *
  * @param location index
  * @param displayBase DisplayObject2
  * @return this
  */
 public FPSTextureView addChildAt(int location, @NonNull DisplayBase displayBase) {
   displayBase.setUp(mFps);
   mDisplayList.add(location, displayBase);
   return this;
 }
 /**
  * Removes the specified child from the display list.
  *
  * @param displayBase DisplayBase
  * @return this
  */
 public FPSTextureView removeChild(@NonNull DisplayBase displayBase) {
   displayBase.disable();
   boolean a = mDisplayList.remove(displayBase);
   return this;
 }
 /**
  * Adds a child to the top of the display list.
  *
  * @param DisplayObject DisplayObject2
  * @return this
  */
 public FPSTextureView addChild(@NonNull DisplayBase DisplayObject) {
   DisplayObject.setUp(mFps);
   mDisplayList.add(DisplayObject);
   return this;
 }