Skip to content

power: Keep exported percentage tied to primary device - #471

Open
shivamklr wants to merge 1 commit into
linuxmint:masterfrom
shivamklr:fix/power-percentage-peripheral-oscillation
Open

shivamklr wants to merge 1 commit into
linuxmint:masterfrom
shivamklr:fix/power-percentage-peripheral-oscillation

Conversation

@shivamklr

@shivamklr shivamklr commented Sep 4, 2026

Copy link
Copy Markdown

engine_recalculate_state_percentage() compares each present UPower device with one shared previous percentage. With a system battery and Bluetooth peripheral, this can alternate the exported Percentage and continuously emit PropertiesChanged.

Select one percentage per recalculation: prefer a present system battery, fall back to a UPS, and ignore peripheral batteries. Composite battery handling is unchanged.

On the test system, a same-source 6.6.4 A/B validation (12 runs per variant and hardware state, 30 seconds each) reduced the AC plugged + Bluetooth connected case from 188.7 to 0 outgoing messages per observation, csd-power CPU from 0.336% to 0.044% of one core, and context switches from 10.47 to 0.75/s. The power-state regression test passes.

Fixes #455

The exported Percentage property previously changed to whichever present
UPower device first differed from the last value. A peripheral notification
could therefore make it alternate between the system battery and the
peripheral charge level.

Scan every device before publishing a value. Prefer a present battery, fall
back to a UPS, and ignore peripheral devices while preserving composite
battery handling.

Add focused GLib coverage for peripheral exclusion and UPS fallback.
@shivamklr
shivamklr marked this pull request as ready for review September 4, 2026 17:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Power monitoring bug

1 participant