Skip to content

Commit a58b3f3

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

File tree

7 files changed

+40
-52
lines changed

7 files changed

+40
-52
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: 15 additions & 27 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
@@ -286,8 +285,7 @@ public MainForm()
286285

287286
_loggingInterval = new UserRadioGroup("loggingInterval",
288287
0,
289-
new[]
290-
{
288+
[
291289
log1sMenuItem,
292290
log2sMenuItem,
293291
log5sMenuItem,
@@ -301,7 +299,7 @@ public MainForm()
301299
log1hMenuItem,
302300
log2hMenuItem,
303301
log6hMenuItem
304-
},
302+
],
305303
_settings);
306304

307305
_loggingInterval.Changed += (_, _) =>
@@ -326,15 +324,14 @@ public MainForm()
326324

327325
_updateInterval = new UserRadioGroup("updateIntervalMenuItem",
328326
2,
329-
new[]
330-
{
327+
[
331328
updateInterval250msMenuItem,
332329
updateInterval500msMenuItem,
333330
updateInterval1sMenuItem,
334331
updateInterval2sMenuItem,
335332
updateInterval5sMenuItem,
336333
updateInterval10sMenuItem
337-
},
334+
],
338335
_settings);
339336

340337
_updateInterval.Changed += (_, _) =>
@@ -367,8 +364,7 @@ public MainForm()
367364

368365
_sensorValuesTimeWindow = new UserRadioGroup("sensorValuesTimeWindow",
369366
10,
370-
new[]
371-
{
367+
[
372368
timeWindow30sMenuItem,
373369
timeWindow1minMenuItem,
374370
timeWindow2minMenuItem,
@@ -380,7 +376,7 @@ public MainForm()
380376
timeWindow6hMenuItem,
381377
timeWindow12hMenuItem,
382378
timeWindow24hMenuItem
383-
},
379+
],
384380
_settings);
385381

386382
perSessionFileRotationMenuItem.Checked = _logger.FileRotationMethod == LoggerFileRotation.PerSession;
@@ -442,7 +438,7 @@ public MainForm()
442438
FormClosed += CloseApplication;
443439
// Make sure the settings are saved when the user logs off
444440
Microsoft.Win32.SystemEvents.SessionEnded += (_, _) => CloseApplication(null, EventArgs.Empty);
445-
Microsoft.Win32.SystemEvents.PowerModeChanged += PowerModeChanged;
441+
//Microsoft.Win32.SystemEvents.PowerModeChanged += PowerModeChanged;
446442
}
447443

448444
private void StopFileHardwareMenuFromClosing(object sender, ToolStripDropDownClosingEventArgs e)
@@ -474,18 +470,14 @@ private void BackgroundUpdater_DoWork(object sender, DoWorkEventArgs e)
474470

475471
private void PowerModeChanged(object sender, Microsoft.Win32.PowerModeChangedEventArgs eventArgs)
476472
{
477-
if (eventArgs.Mode == Microsoft.Win32.PowerModes.Resume || resetOnPowerChangedMenuItem.Checked)
473+
if (eventArgs.Mode == Microsoft.Win32.PowerModes.Resume && _computer.IsBatteryEnabled)
478474
{
479-
_computer.Reset();
475+
_computer.IsBatteryEnabled = false;
476+
_computer.IsBatteryEnabled = true;
477+
//_computer.Reset();
480478
}
481479
}
482480

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

536528
private void HardwareRemoved(IHardware hardware)
537529
{
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)
530+
var nodesToRemove = _root.Nodes
531+
.Where(node => node is HardwareNode hardwareNode && hardwareNode.Hardware == hardware)
532+
.ToArray();
533+
foreach (var hardwareNode in nodesToRemove)
546534
{
547535
_root.Nodes.Remove(hardwareNode);
548536
}

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: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,9 @@
88

99
namespace OpenHardwareMonitor.Hardware.Battery;
1010

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

1515
static bool QueryStringFromBatteryInfo(SafeFileHandle battery, Kernel32.BATTERY_QUERY_INFORMATION bqi, out string value)
1616
{
@@ -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)