public void draw(GLCanvas canvas) {
   canvas.save(GLCanvas.SAVE_FLAG_ALPHA);
   canvas.multiplyAlpha(mAlpha / 255.0f);
   Rect b = mBounds;
   draw(canvas, b.left, b.top, b.width(), b.height());
   canvas.restore();
 }
  @Override
  public void draw(GLCanvas canvas, int x, int y, int width, int height) {
    synchronized (this) {
      if (!mHasTexture) return;
      mSurfaceTexture.updateTexImage();
      mSurfaceTexture.getTransformMatrix(mTransform);

      // Flip vertically.
      canvas.save(GLCanvas.SAVE_FLAG_MATRIX);
      int cx = x + width / 2;
      int cy = y + height / 2;
      canvas.translate(cx, cy);
      canvas.scale(1, -1, 1);
      canvas.translate(-cx, -cy);
      canvas.drawTexture(mExtTexture, mTransform, x, y, width, height);
      canvas.restore();
    }
  }