1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-26 02:17:34 +00:00

SystemMonitor: Update stats/graph immediately on launch

Previously the stats was only updated once the first callback from
refresh_timer fired.

It now makes an early stats update on launch, so something will appear
in the graphs.
This commit is contained in:
John Bundgaard 2023-01-04 04:55:43 +01:00 committed by Linus Groh
parent f8ce211201
commit badfe72b64

View file

@ -312,21 +312,22 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
Config::write_i32("SystemMonitor"sv, "Monitor"sv, "Frequency"sv, frequency); Config::write_i32("SystemMonitor"sv, "Monitor"sv, "Frequency"sv, frequency);
} }
auto& refresh_timer = window->add<Core::Timer>( auto update_stats = [&] {
frequency * 1000, [&] { // FIXME: remove the primitive re-toggling code once persistent model indices work.
// FIXME: remove the primitive re-toggling code once persistent model indices work. auto toggled_indices = process_table_view.selection().indices();
auto toggled_indices = process_table_view.selection().indices(); toggled_indices.remove_all_matching([&](auto const& index) { return !process_table_view.is_toggled(index); });
toggled_indices.remove_all_matching([&](auto const& index) { return !process_table_view.is_toggled(index); }); process_model->update();
process_model->update(); if (!process_table_view.selection().is_empty())
if (!process_table_view.selection().is_empty()) process_table_view.selection().for_each_index([&](auto& selection) {
process_table_view.selection().for_each_index([&](auto& selection) { if (toggled_indices.contains_slow(selection))
if (toggled_indices.contains_slow(selection)) process_table_view.expand_all_parents_of(selection);
process_table_view.expand_all_parents_of(selection); });
});
if (auto* memory_stats_widget = SystemMonitor::MemoryStatsWidget::the()) if (auto* memory_stats_widget = SystemMonitor::MemoryStatsWidget::the())
memory_stats_widget->refresh(); memory_stats_widget->refresh();
}); };
update_stats();
auto& refresh_timer = window->add<Core::Timer>(frequency * 1000, move(update_stats));
auto selected_id = [&](ProcessModel::Column column) -> pid_t { auto selected_id = [&](ProcessModel::Column column) -> pid_t {
if (process_table_view.selection().is_empty()) if (process_table_view.selection().is_empty())