From d7e7f46c998efba58a15e5580b98f62ab802a520 Mon Sep 17 00:00:00 2001 From: Stephanie Anderl <46726333+sanderl@users.noreply.github.com> Date: Fri, 28 Feb 2020 09:34:16 -0800 Subject: [PATCH] Update Analysis after variables change (#1056) * Updated Analyze Equation to set the current value of the variables before analysis * Updated SetGraphArgs to take in a graph parameter and use it in AnalyzeEquation() --- src/GraphControl/Control/Grapher.cpp | 16 ++++++++-------- src/GraphControl/Control/Grapher.h | 2 +- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/GraphControl/Control/Grapher.cpp b/src/GraphControl/Control/Grapher.cpp index 3a77080..fd38ef5 100644 --- a/src/GraphControl/Control/Grapher.cpp +++ b/src/GraphControl/Control/Grapher.cpp @@ -199,6 +199,8 @@ namespace GraphControl { if (auto graph = GetGraph(equation)) { + SetGraphArgs(graph); + if (auto analyzer = graph->GetAnalyzer()) { vector equationVector; @@ -300,7 +302,7 @@ namespace GraphControl if (initResult != nullopt) { UpdateGraphOptions(m_graph->GetOptions(), validEqs); - SetGraphArgs(); + SetGraphArgs(m_graph); m_renderMain->Graph = m_graph; @@ -329,7 +331,7 @@ namespace GraphControl if (initResult != nullopt) { UpdateGraphOptions(m_graph->GetOptions(), validEqs); - SetGraphArgs(); + SetGraphArgs(m_graph); m_renderMain->Graph = m_graph; co_await m_renderMain->RunRenderPassAsync(); @@ -366,15 +368,15 @@ namespace GraphControl } } - void Grapher::SetGraphArgs() + void Grapher::SetGraphArgs(shared_ptr graph) { - if (m_graph != nullptr && m_renderMain != nullptr) + if (graph != nullptr && m_renderMain != nullptr) { critical_section::scoped_lock lock(m_renderMain->GetCriticalSection()); for (auto variable : Variables) { - m_graph->SetArgValue(variable->Key->Data(), variable->Value); + graph->SetArgValue(variable->Key->Data(), variable->Value); } } } @@ -443,8 +445,7 @@ namespace GraphControl if (m_graph != nullptr && m_renderMain != nullptr) { - - auto workItemHandler = ref new WorkItemHandler([this, variableName, newValue](IAsyncAction ^ action) { + auto workItemHandler = ref new WorkItemHandler([this, variableName, newValue](IAsyncAction ^ action) { m_renderMain->GetCriticalSection().lock(); m_graph->SetArgValue(variableName->Data(), newValue); m_renderMain->GetCriticalSection().unlock(); @@ -453,7 +454,6 @@ namespace GraphControl }); ThreadPool::RunAsync(workItemHandler, WorkItemPriority::High, WorkItemOptions::None); - } } diff --git a/src/GraphControl/Control/Grapher.h b/src/GraphControl/Control/Grapher.h index 9b00acc..facfe88 100644 --- a/src/GraphControl/Control/Grapher.h +++ b/src/GraphControl/Control/Grapher.h @@ -276,7 +276,7 @@ public concurrency::task TryPlotGraph(bool keepCurrentView, bool shouldRetry); void UpdateGraphOptions(Graphing::IGraphingOptions& options, const std::vector& validEqs); std::vector GetGraphableEquations(); - void SetGraphArgs(); + void SetGraphArgs(std::shared_ptr graph); std::shared_ptr GetGraph(GraphControl::Equation ^ equation); void UpdateVariables();