From b8fc74ad3f0ca956dfd13010026673eed7f11b23 Mon Sep 17 00:00:00 2001 From: djdron Date: Tue, 8 Dec 2020 18:36:39 +0200 Subject: [PATCH] Crash fix when using multiple renderers (do not use static currentPipe) (#428) Co-authored-by: djdron --- src/libprojectM/Renderer/Renderer.cpp | 8 +++++--- src/libprojectM/Renderer/Renderer.hpp | 7 +------ 2 files changed, 6 insertions(+), 9 deletions(-) diff --git a/src/libprojectM/Renderer/Renderer.cpp b/src/libprojectM/Renderer/Renderer.cpp index 581313f88..5ff18d6a0 100644 --- a/src/libprojectM/Renderer/Renderer.cpp +++ b/src/libprojectM/Renderer/Renderer.cpp @@ -17,8 +17,6 @@ #include #include -Pipeline* Renderer::currentPipe; - using namespace std::chrono; class Preset; @@ -533,7 +531,11 @@ void Renderer::Interpolation(const Pipeline& pipeline, const PipelineContext& pi else { mesh.Reset(); - omptl::transform(mesh.p.begin(), mesh.p.end(), mesh.identity.begin(), mesh.p.begin(), &Renderer::PerPixel); + Pipeline *cp = currentPipe; + omptl::transform(mesh.p.begin(), mesh.p.end(), mesh.identity.begin(), mesh.p.begin(), + [cp](PixelPoint p, PerPixelContext &context) { + return cp->PerPixel(p, context); + }); for (int j = 0; j < mesh.height - 1; j++) { diff --git a/src/libprojectM/Renderer/Renderer.hpp b/src/libprojectM/Renderer/Renderer.hpp index 99de62fe4..26770f166 100644 --- a/src/libprojectM/Renderer/Renderer.hpp +++ b/src/libprojectM/Renderer/Renderer.hpp @@ -190,7 +190,7 @@ private: PerPixelMesh mesh; BeatDetect *beatDetect; TextureManager *textureManager; - static Pipeline* currentPipe; + Pipeline* currentPipe; TimeKeeper *timeKeeperFPS; TimeKeeper *timeKeeperToast; @@ -252,11 +252,6 @@ private: void CompositeShaderOutput(const Pipeline &pipeline, const PipelineContext &pipelineContext); void CompositeOutput(const Pipeline &pipeline, const PipelineContext &pipelineContext); - inline static PixelPoint PerPixel(PixelPoint p, PerPixelContext &context) - { - return currentPipe->PerPixel(p,context); - } - void rescale_per_pixel_matrices(); void draw_toast();