Skip to content

Commit

Permalink
SystemMonitor: Invalidate ProcessModel indexes when necessary
Browse files Browse the repository at this point in the history
If the process table grows or shrinks, we need to invalidate all the
ProcessModel indexes. This is not great, but it's the most precise
invalidation we can do at the moment.
  • Loading branch information
awesomekling committed Aug 16, 2020
1 parent 17992fb commit b9ae937
Showing 1 changed file with 4 additions and 1 deletion.
5 changes: 4 additions & 1 deletion Applications/SystemMonitor/ProcessModel.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -352,6 +352,7 @@ GUI::Variant ProcessModel::data(const GUI::ModelIndex& index, Role role) const

void ProcessModel::update()
{
auto previous_pid_count = m_pids.size();
auto all_processes = Core::ProcessStatisticsReader::get_all();

unsigned last_sum_times_scheduled = 0;
Expand Down Expand Up @@ -434,5 +435,7 @@ void ProcessModel::update()
if (on_cpu_info_change)
on_cpu_info_change(m_cpus);

did_update(GUI::Model::UpdateFlag::DontInvalidateIndexes);
// FIXME: This is a rather hackish way of invalidating indexes.
// It would be good if GUI::Model had a way to orchestrate removal/insertion while preserving indexes.
did_update(previous_pid_count == m_pids.size() ? GUI::Model::UpdateFlag::DontInvalidateIndexes : GUI::Model::UpdateFlag::InvalidateAllIndexes);
}

0 comments on commit b9ae937

Please sign in to comment.