From 39ccd5ab79e16f648e64ccc12fad128c798507ac Mon Sep 17 00:00:00 2001 From: Norman Feske Date: Fri, 19 Apr 2024 17:15:00 +0200 Subject: [PATCH] sculpt: refine condition of acpi features Commit "sculpt: safeguard the offering of suspend/resume" was too lax about the detection of acpi support. In situations where acpi support is selected but not yet installed, the menu would offer the features already. This patch restricts the condition such that acpi support must be running, not merely selected. Issue #5174 --- repos/gems/src/app/sculpt_manager/main.cc | 2 +- repos/gems/src/app/sculpt_manager/model/runtime_config.h | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/repos/gems/src/app/sculpt_manager/main.cc b/repos/gems/src/app/sculpt_manager/main.cc index e87315d6f4..a6644aeaba 100644 --- a/repos/gems/src/app/sculpt_manager/main.cc +++ b/repos/gems/src/app/sculpt_manager/main.cc @@ -2201,7 +2201,7 @@ void Sculpt::Main::_handle_runtime_state(Xml_node const &state) /* power-management features depend on optional acpi_support subsystem */ { - bool const acpi_support = _runtime_state.present_in_runtime("acpi_support"); + bool const acpi_support = _cached_runtime_config.present_in_runtime("acpi_support"); Power_features const orig_power_features = _power_features; _power_features.poweroff = acpi_support; _power_features.suspend = acpi_support && _drivers.suspend_supported();; diff --git a/repos/gems/src/app/sculpt_manager/model/runtime_config.h b/repos/gems/src/app/sculpt_manager/model/runtime_config.h index fba9bf3fae..d32e9c8927 100644 --- a/repos/gems/src/app/sculpt_manager/model/runtime_config.h +++ b/repos/gems/src/app/sculpt_manager/model/runtime_config.h @@ -382,6 +382,15 @@ class Sculpt::Runtime_config ); } + bool present_in_runtime(Start_name const &name) const + { + bool result = false; + _components.for_each([&] (Component const &component) { + if (component.name == name) + result = true; }); + return result; + } + void with_start_name(Dialog::Id const &id, auto const &fn) const { _components.for_each([&] (Component const &component) {