From 6642152e6610f1e885babfaeb3c99bd0004916fc Mon Sep 17 00:00:00 2001 From: Enrico Forestieri Date: Sun, 25 Sep 2016 20:31:13 +0200 Subject: [PATCH] Do not rely on math macros being updated Trying to spare a few cycles by avoiding computing metrics during screen updates and export. See also 8f86ee74, 72cf7c8f, and e36a8903. Guillaume will tell whether this also avoids crashing his documents ;) --- src/BufferView.cpp | 8 ++------ src/mathed/MathMacro.cpp | 10 +++++----- 2 files changed, 7 insertions(+), 11 deletions(-) diff --git a/src/BufferView.cpp b/src/BufferView.cpp index ad40dd6b28..cb7ea79050 100644 --- a/src/BufferView.cpp +++ b/src/BufferView.cpp @@ -495,9 +495,7 @@ void BufferView::processUpdateFlags(Update::flags flags) // updateMetrics() does not update paragraph position // This is done at draw() time. So we need a redraw! - // We pass true so that metrics are computed for the sake - // of having MacroData updated. - buffer_.changed(true); + buffer_.changed(false); if (needsFitCursor()) { // The cursor is off screen so ensure it is visible. @@ -2167,9 +2165,7 @@ void BufferView::updateHoveredInset() const // This event (moving without mouse click) is not passed further. // This should be changed if it is further utilized. - // We pass true so that metrics are computed for the sake - // of having MacroData updated. - buffer_.changed(true); + buffer_.changed(false); } } diff --git a/src/mathed/MathMacro.cpp b/src/mathed/MathMacro.cpp index d1a8b50c7b..06a55bf703 100644 --- a/src/mathed/MathMacro.cpp +++ b/src/mathed/MathMacro.cpp @@ -939,11 +939,11 @@ bool MathMacro::folded() const void MathMacro::write(WriteStream & os) const { - bool user_macro = !MacroTable::globalMacros().get(name()); - bool textmode_macro = user_macro ? false : d->macro_ && d->macro_->symbol() - && d->macro_->symbol()->extra == "textmode"; - bool needs_mathmode = user_macro ? bool(d->macro_) : d->macro_ && (!d->macro_->symbol() - || d->macro_->symbol()->extra != "textmode"); + MacroData const * data = MacroTable::globalMacros().get(name()); + bool textmode_macro = data && data->symbol() + && data->symbol()->extra == "textmode"; + bool needs_mathmode = data && (!data->symbol() + || data->symbol()->extra != "textmode"); MathEnsurer ensurer(os, needs_mathmode, true, textmode_macro); -- 2.39.2