From 3c4e48f9015d882b8f103020bf214061b9be8dd1 Mon Sep 17 00:00:00 2001 From: Kubat <mael.martin31@gmail.com> Date: Mon, 5 Jul 2021 21:46:29 +0200 Subject: [PATCH] MISC: Add a parallel_for macro for `#pragma omp parallel for \nfor (...)` This is done to have a good formating with clang-format --- .clang-format | 1 + src/Lib/Utils.hh | 7 ++++++- src/UI/AudioVisualizer.cc | 6 ++---- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/.clang-format b/.clang-format index f24513ac..57f14efd 100644 --- a/.clang-format +++ b/.clang-format @@ -63,6 +63,7 @@ ForEachMacros: - 'FOR_EVER_IF' - 'FOR_EVER_UNTIL' - 'FOR_EACH_FLAT_LIST_ITEM' + - 'parallel_for' IncludeCategories: - Regex: '.*' diff --git a/src/Lib/Utils.hh b/src/Lib/Utils.hh index 95f8e748..3c9bf0e8 100644 --- a/src/Lib/Utils.hh +++ b/src/Lib/Utils.hh @@ -10,8 +10,13 @@ #include <QtGlobal> #include <type_traits> +// Prety define for OpenMP's parallel for loop with indentation not fucked up +// by clang-format. +#define parallel_for \ + _Pragma("omp parallel for") for + +// Don't move this object, create it in one place and never move it again. #define VIVY_UNMOVABLE_OBJECT(classname) \ - /* Don't move this object around */ \ classname(const classname &) = delete; /* Copy */ \ classname(classname &&) = delete; /* Move */ \ classname &operator=(const classname &) = delete; /* Copy assign */ \ diff --git a/src/UI/AudioVisualizer.cc b/src/UI/AudioVisualizer.cc index a85ac126..6ef88a27 100644 --- a/src/UI/AudioVisualizer.cc +++ b/src/UI/AudioVisualizer.cc @@ -55,8 +55,7 @@ AudioVisualizer::AudioVisualizer(AudioContext::StreamPtr stream, QWidget *parent /* Compute the image data */ for (size_t x = 0, i = 0; i < size - height; i += decalage, ++x) { -#pragma omp parallel for - for (size_t j = 0; j < height; j++) { + parallel_for (size_t j = 0; j < height; j++) { const double curr_dat = decodedData[i + j]; const double window_modifier = (1 - cos(2 * M_PI * static_cast<double>(j) / static_cast<double>(height - 1))) / 2; @@ -67,8 +66,7 @@ AudioVisualizer::AudioVisualizer(AudioContext::StreamPtr stream, QWidget *parent av_rdft_calc(ctx.get(), chunkData.get()); -#pragma omp parallel for - for (size_t j = 0; j < height / 2; j++) { + parallel_for (size_t j = 0; j < height / 2; j++) { const float im = chunkData[j * 2]; const float re = chunkData[j * 2 + 1]; const float mag = sqrtf(im * im + re * re); -- GitLab