From 6a47edcd35884095946f761fa3aa2367c7c26442 Mon Sep 17 00:00:00 2001 From: jacqueline Date: Thu, 28 Sep 2023 10:43:48 +1000 Subject: Use databinding for the top bar. It's so nice now! --- src/battery/battery.cpp | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) (limited to 'src/battery/battery.cpp') diff --git a/src/battery/battery.cpp b/src/battery/battery.cpp index 9ac6ebf1..92185db7 100644 --- a/src/battery/battery.cpp +++ b/src/battery/battery.cpp @@ -77,15 +77,16 @@ auto Battery::Update() -> void { *charge_state == ChargeStatus::kChargingFast || *charge_state == ChargeStatus::kFullCharge; - if (!state_ || state_->is_charging != is_charging || - state_->percent != percent) { - EmitEvent(); + if (state_ && state_->is_charging == is_charging && + state_->percent == percent) { + return; } state_ = BatteryState{ .percent = percent, .is_charging = is_charging, }; + EmitEvent(); } auto Battery::State() -> std::optional { @@ -94,8 +95,15 @@ auto Battery::State() -> std::optional { } auto Battery::EmitEvent() -> void { - events::System().Dispatch(system_fsm::BatteryStateChanged{}); - events::Ui().Dispatch(system_fsm::BatteryStateChanged{}); + auto state = state_; + if (!state) { + return; + } + system_fsm::BatteryStateChanged ev{ + .new_state = *state, + }; + events::System().Dispatch(ev); + events::Ui().Dispatch(ev); } } // namespace battery -- cgit v1.2.3