Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorClément Foucault <foucault.clem@gmail.com>2022-11-13 18:00:58 +0300
committerClément Foucault <foucault.clem@gmail.com>2022-11-13 18:00:58 +0300
commit0e4bdd428ca2a2f0b8c878aa9a5c3ca22d1aa140 (patch)
tree311f28717a9e67c1eb662bc1c4756675ae9779e4
parent67dfb6170042b8935f958dec3f1e542ddb6f9b71 (diff)
DRW: Wrappers: Allow trivial types inside `draw::SwapChain`
This allows to use pointers and such other trivial types which cannot implement the `swap` mehod.
-rw-r--r--source/blender/draw/intern/DRW_gpu_wrapper.hh8
1 files changed, 7 insertions, 1 deletions
diff --git a/source/blender/draw/intern/DRW_gpu_wrapper.hh b/source/blender/draw/intern/DRW_gpu_wrapper.hh
index 8bcfec41c36..6aca05f124f 100644
--- a/source/blender/draw/intern/DRW_gpu_wrapper.hh
+++ b/source/blender/draw/intern/DRW_gpu_wrapper.hh
@@ -1056,7 +1056,13 @@ template<typename T, int64_t len> class SwapChain {
void swap()
{
for (auto i : IndexRange(len - 1)) {
- T::swap(chain_[i], chain_[(i + 1) % len]);
+ auto i_next = (i + 1) % len;
+ if constexpr (std::is_trivial_v<T>) {
+ SWAP(T, chain_[i], chain_[i_next]);
+ }
+ else {
+ T::swap(chain_[i], chain_[i_next]);
+ }
}
}