endFrame method

void endFrame()

Frees everything taken this frame and drops long-unused targets.

Implementation

void endFrame() {
  for (final texture in _taken) {
    (_free[texture.desc] ??= []).add((texture, _frame));
  }
  _taken.clear();
  _frame++;
  _free.removeWhere((_, list) {
    list.removeWhere((entry) => _frame - entry.$2 > keepFrames);
    return list.isEmpty;
  });
}