diff options
| author | jacqueline <me@jacqueline.id.au> | 2023-09-28 10:43:48 +1000 |
|---|---|---|
| committer | jacqueline <me@jacqueline.id.au> | 2023-09-28 10:43:48 +1000 |
| commit | 6a47edcd35884095946f761fa3aa2367c7c26442 (patch) | |
| tree | 5b34e1bf14759dcc78b6611b1b6538dc03119860 /src/battery/battery.cpp | |
| parent | f09ba5ffd53bf7d28e0dc516c00a8f69ca7efae9 (diff) | |
| download | tangara-fw-6a47edcd35884095946f761fa3aa2367c7c26442.tar.gz | |
Use databinding for the top bar. It's so nice now!
Diffstat (limited to 'src/battery/battery.cpp')
| -rw-r--r-- | src/battery/battery.cpp | 18 |
1 files changed, 13 insertions, 5 deletions
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<BatteryState> { @@ -94,8 +95,15 @@ auto Battery::State() -> std::optional<BatteryState> { } 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 |
