| 1234567891011121314151617181920212223242526272829303132 |
- // Copyright 2020 yuzu Emulator Project
- // Licensed under GPLv2 or any later version
- // Refer to the license.txt file included.
- #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
|