| 12345678910111213141516171819202122232425262728293031 |
- // SPDX-FileCopyrightText: Copyright 2020 yuzu Emulator Project
- // SPDX-License-Identifier: GPL-2.0-or-later
- #pragma once
- #include <array>
- #include <cstddef>
- #include <utility>
- #include <vector>
- namespace VideoCommon {
- /// Container to push objects to be destroyed a few ticks in the future
- template <typename T, size_t TICKS_TO_DESTROY>
- 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<std::vector<T>, TICKS_TO_DESTROY> elements;
- };
- } // namespace VideoCommon
|