From 29a5e011aad1dd66b1bf480a0f51bd9a208a88d7 Mon Sep 17 00:00:00 2001 From: Mark Sanders Date: Thu, 11 Jul 2019 23:36:11 +0200 Subject: [PATCH] Added a setting (enabled by default) that keeps the module previews in memory forever. This makes it so that module previews aren't cleared out of memory when they have not been rendered for >60 frames making the module browser much more responsive at the cost of memory. --- include/settings.hpp | 1 + src/app/ModuleBrowser.cpp | 2 +- src/settings.cpp | 7 +++++++ 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/include/settings.hpp b/include/settings.hpp index 36059752..1f5c89ab 100644 --- a/include/settings.hpp +++ b/include/settings.hpp @@ -29,6 +29,7 @@ extern float cableOpacity; extern float cableTension; extern bool allowCursorLock; extern bool realTime; +extern bool keepPreviews; extern float sampleRate; extern int threadCount; extern bool paramTooltip; diff --git a/src/app/ModuleBrowser.cpp b/src/app/ModuleBrowser.cpp index d729f2b8..dd4d6938 100644 --- a/src/app/ModuleBrowser.cpp +++ b/src/app/ModuleBrowser.cpp @@ -192,7 +192,7 @@ struct ModelBox : widget::OpaqueWidget { } void step() override { - if (previewFb && ++visibleFrames >= 60) { + if (!settings::keepPreviews && previewFb && ++visibleFrames >= 60) { deletePreview(); } OpaqueWidget::step(); diff --git a/src/settings.cpp b/src/settings.cpp index 409368ae..35295716 100644 --- a/src/settings.cpp +++ b/src/settings.cpp @@ -24,6 +24,7 @@ float cableOpacity = 0.5; float cableTension = 0.5; bool allowCursorLock = true; bool realTime = false; +bool keepPreviews = true; float sampleRate = 44100.0; int threadCount = 1; bool paramTooltip = false; @@ -65,6 +66,8 @@ json_t *toJson() { json_object_set_new(rootJ, "realTime", json_boolean(realTime)); + json_object_set_new(rootJ, "keepPreviews", json_boolean(keepPreviews)); + json_object_set_new(rootJ, "sampleRate", json_real(sampleRate)); json_object_set_new(rootJ, "threadCount", json_integer(threadCount)); @@ -140,6 +143,10 @@ void fromJson(json_t *rootJ) { if (realTimeJ) realTime = json_boolean_value(realTimeJ); + json_t *keepPreviewsJ = json_object_get(rootJ, "keepPreviews"); + if (keepPreviewsJ) + keepPreviews = json_boolean_value(keepPreviewsJ); + json_t *sampleRateJ = json_object_get(rootJ, "sampleRate"); if (sampleRateJ) sampleRate = json_number_value(sampleRateJ);