summaryrefslogtreecommitdiff
path: root/function.cpp
diff options
context:
space:
mode:
authorRusty Wagner <rusty.wagner@gmail.com>2025-07-01 19:52:14 -0400
committerRusty Wagner <rusty.wagner@gmail.com>2025-07-03 12:43:48 -0400
commitb4918a512bef271d7f6e27980ea875208c7f2954 (patch)
tree9708e48bbaa6d9dc0352c50c0b1aac0279283e59 /function.cpp
parentb26a85dda211a0f1f00eecc37441e1725c5ef898 (diff)
Reduce number of refreshes and memory usage of cross references widget.
* Generates IL for cross references only when visible instead of all at once. * Releases memory for IL after the cross references retrieves the tokens. * Much faster algorithm for updating IL when functions change. * Don't refresh cross references at all if the widget isn't visible. Retreiving the new set of cross references is deferred until the widget becomes visible again. * Don't redo the query for the list of cross references when anything in the entire UI changes, even the window layout. Only recompute the list when an event for a new cross reference selection comes in.
Diffstat (limited to 'function.cpp')
-rw-r--r--function.cpp3
1 files changed, 3 insertions, 0 deletions
diff --git a/function.cpp b/function.cpp
index 367dbe80..19d3fbc7 100644
--- a/function.cpp
+++ b/function.cpp
@@ -3566,6 +3566,9 @@ AdvancedFunctionAnalysisDataRequestor& AdvancedFunctionAnalysisDataRequestor::op
void AdvancedFunctionAnalysisDataRequestor::SetFunction(Function* func)
{
+ if (m_func.GetPtr() == func)
+ return;
+
if (m_func)
m_func->ReleaseAdvancedAnalysisData();