https://git.reactos.org/?p=reactos.git;a=commitdiff;h=07a76b3dec662f32f883a119a339333c523f7eb1

commit 07a76b3dec662f32f883a119a339333c523f7eb1
Author:     George Bișoc <george.bi...@reactos.org>
AuthorDate: Mon Aug 12 14:08:12 2024 +0200
Commit:     George Bișoc <george.bi...@reactos.org>
CommitDate: Tue Aug 13 14:17:04 2024 +0200

    [STOBJECT] Do not report the remaining battery capacity if it is unknown
    
    Support for system batteries in ReactOS is really minimal to the point of 
non-existing. We are detecting the presence of any upcoming battery but since 
there's lacking in critical code that deals with communication
    between PO and the battery class driver as the battery systray icon uses 
GetSystemPowerStatus to gather battery info which in turn inquires the power 
manager via NtPowerInformation(SystemBatteryState), we have
    to report to the user that the remaining capacity is unknown rather than 
returning a pseudo capacity value.
    
    Technically this so called "pesudo" value is just a construct denoted as 
BATTERY_PERCENTAGE_UNKNOWN. Not reporting the actual remaining capacity makes 
sense, as there could be a scenario where the battery may not
    properly report its real datum, therefore it's best to be honest to the 
user what's really going on.
    
    CORE-19452
    CORE-18969
---
 dll/shellext/stobject/power.cpp | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/dll/shellext/stobject/power.cpp b/dll/shellext/stobject/power.cpp
index 9d80665dc87..ecae456b66e 100644
--- a/dll/shellext/stobject/power.cpp
+++ b/dll/shellext/stobject/power.cpp
@@ -90,6 +90,12 @@ static HICON DynamicLoadIcon(HINSTANCE hinst)
     }
 
     if (((PowerStatus.BatteryFlag & BATTERY_FLAG_NO_BATTERY) == 0) &&
+        (PowerStatus.BatteryLifePercent == BATTERY_PERCENTAGE_UNKNOWN))
+    {
+        hBatIcon = LoadIcon(hinst, MAKEINTRESOURCE(IDI_BATTCAP_ERR));
+        g_strTooltip.LoadStringW(IDS_PWR_UNKNOWN_REMAINING);
+    }
+    else if (((PowerStatus.BatteryFlag & BATTERY_FLAG_NO_BATTERY) == 0) &&
         ((PowerStatus.BatteryFlag & BATTERY_FLAG_CHARGING) == 
BATTERY_FLAG_CHARGING))
     {
         index = Quantize(PowerStatus.BatteryLifePercent);

Reply via email to