Skip to content

Commit 7798717

Browse files
committed
"Reset on power changed" menu item removed as not relevant anymore
1 parent aff201e commit 7798717

File tree

7 files changed

+33
-42
lines changed

7 files changed

+33
-42
lines changed

OpenHardwareMonitor/OpenHardwareMonitor.csproj

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,8 @@
5656
<ItemGroup>
5757
<PackageReference Include="SergiyE.Common" Version="1.*" />
5858
<PackageReference Include="SergiyE.Common.UI" Version="1.*" />
59+
</ItemGroup>
60+
<ItemGroup Condition=" '$(Configuration)' == 'Release'">
5961
<PackageReference Include="Costura.Fody" Version="4.1.0">
6062
<PrivateAssets>all</PrivateAssets>
6163
</PackageReference>

OpenHardwareMonitor/UI/MainForm.Designer.cs

Lines changed: 0 additions & 10 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

OpenHardwareMonitor/UI/MainForm.cs

Lines changed: 9 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,6 @@ public MainForm()
6767
Text = Updater.ApplicationTitle;
6868
Icon = Icon.ExtractAssociatedIcon(Updater.CurrentFileLocation);
6969
portableModeMenuItem.Checked = _settings.IsPortable;
70-
resetOnPowerChangedMenuItem.Checked = _settings.GetValue("resetOnPowerChangedMenuItem", false);
7170

7271
// make sure the buffers used for double buffering are not disposed
7372
// after each draw call
@@ -442,7 +441,7 @@ public MainForm()
442441
FormClosed += CloseApplication;
443442
// Make sure the settings are saved when the user logs off
444443
Microsoft.Win32.SystemEvents.SessionEnded += (_, _) => CloseApplication(null, EventArgs.Empty);
445-
Microsoft.Win32.SystemEvents.PowerModeChanged += PowerModeChanged;
444+
//Microsoft.Win32.SystemEvents.PowerModeChanged += PowerModeChanged;
446445
}
447446

448447
private void StopFileHardwareMenuFromClosing(object sender, ToolStripDropDownClosingEventArgs e)
@@ -474,18 +473,14 @@ private void BackgroundUpdater_DoWork(object sender, DoWorkEventArgs e)
474473

475474
private void PowerModeChanged(object sender, Microsoft.Win32.PowerModeChangedEventArgs eventArgs)
476475
{
477-
if (eventArgs.Mode == Microsoft.Win32.PowerModes.Resume || resetOnPowerChangedMenuItem.Checked)
476+
if (eventArgs.Mode == Microsoft.Win32.PowerModes.Resume && _computer.IsBatteryEnabled)
478477
{
479-
_computer.Reset();
478+
_computer.IsBatteryEnabled = false;
479+
_computer.IsBatteryEnabled = true;
480+
//_computer.Reset();
480481
}
481482
}
482483

483-
private void ResetOnPowerChangedMenuItem_Click(object sender, EventArgs eventArgs)
484-
{
485-
resetOnPowerChangedMenuItem.Checked = !resetOnPowerChangedMenuItem.Checked;
486-
_settings.SetValue("resetOnPowerChangedMenuItem", resetOnPowerChangedMenuItem.Checked);
487-
}
488-
489484
private void InitializeTheme()
490485
{
491486
mainMenu.Renderer = new ThemedToolStripRenderer();
@@ -535,14 +530,10 @@ private void HardwareAdded(IHardware hardware)
535530

536531
private void HardwareRemoved(IHardware hardware)
537532
{
538-
List<HardwareNode> nodesToRemove = new();
539-
foreach (Node node in _root.Nodes)
540-
{
541-
if (node is HardwareNode hardwareNode && hardwareNode.Hardware == hardware)
542-
nodesToRemove.Add(hardwareNode);
543-
}
544-
545-
foreach (HardwareNode hardwareNode in nodesToRemove)
533+
var nodesToRemove = _root.Nodes
534+
.Where(node => node is HardwareNode hardwareNode && hardwareNode.Hardware == hardware)
535+
.ToArray();
536+
foreach (var hardwareNode in nodesToRemove)
546537
{
547538
_root.Nodes.Remove(hardwareNode);
548539
}

OpenHardwareMonitor/UI/SystemTray.cs

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,13 @@ public void Dispose()
9191

9292
public void Redraw()
9393
{
94-
foreach (SensorNotifyIcon icon in _sensorList)
94+
SensorNotifyIcon[] sensorsToRedraw;
95+
lock (_sensorList)
96+
{
97+
sensorsToRedraw = _sensorList.ToArray();
98+
}
99+
100+
foreach (SensorNotifyIcon icon in sensorsToRedraw)
95101
icon.Update();
96102
}
97103

@@ -120,15 +126,13 @@ private void Remove(ISensor sensor, bool deleteConfig)
120126
_settings.Remove(new Identifier(sensor.Identifier, "tray").ToString());
121127
_settings.Remove(new Identifier(sensor.Identifier, "traycolor").ToString());
122128
}
123-
SensorNotifyIcon instance = null;
124-
foreach (SensorNotifyIcon icon in _sensorList)
125-
{
126-
if (icon.Sensor == sensor)
127-
instance = icon;
128-
}
129+
SensorNotifyIcon instance;
130+
lock(_sensorList)
131+
instance = _sensorList.FirstOrDefault(icon => icon.Sensor == sensor);
129132
if (instance != null)
130133
{
131-
_sensorList.Remove(instance);
134+
lock (_sensorList)
135+
_sensorList.Remove(instance);
132136
UpdateMainIconVisibility();
133137
instance.Dispose();
134138
}

OpenHardwareMonitorLib/Hardware/Battery/Battery.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,7 @@ public override void Update()
149149
Kernel32.BATTERY_WAIT_STATUS bws = default;
150150
bws.BatteryTag = _batteryTag;
151151
Kernel32.BATTERY_STATUS batteryStatus = default;
152-
if (Kernel32.DeviceIoControl(_batteryHandle,
152+
if (!_batteryHandle.IsClosed && Kernel32.DeviceIoControl(_batteryHandle,
153153
Kernel32.IOCTL.IOCTL_BATTERY_QUERY_STATUS,
154154
ref bws,
155155
Marshal.SizeOf(bws),
@@ -213,7 +213,7 @@ public override void Update()
213213
Kernel32.BATTERY_QUERY_INFORMATION bqi = default;
214214
bqi.BatteryTag = _batteryTag;
215215
bqi.InformationLevel = Kernel32.BATTERY_QUERY_INFORMATION_LEVEL.BatteryEstimatedTime;
216-
if (Kernel32.DeviceIoControl(_batteryHandle,
216+
if (!_batteryHandle.IsClosed && Kernel32.DeviceIoControl(_batteryHandle,
217217
Kernel32.IOCTL.IOCTL_BATTERY_QUERY_INFORMATION,
218218
ref bqi,
219219
Marshal.SizeOf(bqi),
@@ -234,7 +234,7 @@ public override void Update()
234234

235235
uint temperature = 0;
236236
bqi.InformationLevel = Kernel32.BATTERY_QUERY_INFORMATION_LEVEL.BatteryTemperature;
237-
if (Kernel32.DeviceIoControl(_batteryHandle,
237+
if (!_batteryHandle.IsClosed && Kernel32.DeviceIoControl(_batteryHandle,
238238
Kernel32.IOCTL.IOCTL_BATTERY_QUERY_INFORMATION,
239239
ref bqi,
240240
Marshal.SizeOf(bqi),
@@ -252,7 +252,7 @@ public override void Update()
252252

253253
bqi.InformationLevel = Kernel32.BATTERY_QUERY_INFORMATION_LEVEL.BatteryInformation;
254254
Kernel32.BATTERY_INFORMATION bi = default;
255-
if (Kernel32.DeviceIoControl(_batteryHandle,
255+
if (!_batteryHandle.IsClosed && Kernel32.DeviceIoControl(_batteryHandle,
256256
Kernel32.IOCTL.IOCTL_BATTERY_QUERY_INFORMATION,
257257
ref bqi,
258258
Marshal.SizeOf(bqi),

OpenHardwareMonitorLib/Hardware/Battery/BatteryGroup.cs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
namespace OpenHardwareMonitor.Hardware.Battery;
1010

11-
internal class BatteryGroup : IGroup
11+
internal class BatteryGroup : IGroup, IHardwareChanged
1212
{
1313
private readonly List<Battery> _hardware = new();
1414

@@ -41,6 +41,9 @@ static bool QueryStringFromBatteryInfo(SafeFileHandle battery, Kernel32.BATTERY_
4141
return result;
4242
}
4343

44+
public event HardwareEventHandler HardwareAdded;
45+
public event HardwareEventHandler HardwareRemoved;
46+
4447
public unsafe BatteryGroup(ISettings settings)
4548
{
4649
// No implementation for battery information on Unix systems
@@ -136,6 +139,7 @@ public unsafe BatteryGroup(ISettings settings)
136139

137140
SetupApi.SetupDiDestroyDeviceInfoList(hdev);
138141
}
142+
_hardware.ForEach(h => HardwareAdded?.Invoke(h));
139143
}
140144

141145
/// <inheritdoc />
@@ -144,6 +148,7 @@ public unsafe BatteryGroup(ISettings settings)
144148
/// <inheritdoc />
145149
public void Close()
146150
{
151+
_hardware.ForEach(h => HardwareRemoved?.Invoke(h));
147152
foreach (Battery battery in _hardware)
148153
battery.Close();
149154
}

OpenHardwareMonitorLib/Hardware/Ring0.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@ internal static class Ring0
2020
internal static KernelDriver KernelDriver => _driver;
2121

2222
public static void Open(bool portable)
23-
2423
{
2524
// no implementation for unix systems
2625
if (OperatingSystemHelper.IsUnix)

0 commit comments

Comments
 (0)