// SPDX-FileCopyrightText: Copyright 2020 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later #pragma once #include #include #include #include namespace VideoCommon { /// Container to push objects to be destroyed a few ticks in the future template class DelayedDestructionRing { public: void Tick() { index = (index + 1) % TICKS_TO_DESTROY; elements[index].clear(); } void Push(T&& object) { elements[index].push_back(std::move(object)); } private: size_t index = 0; std::array, TICKS_TO_DESTROY> elements; }; } // namespace VideoCommon