fix: Panic if power scheme operations fail. This shouldn't happen, but if it does then the actual failure cases should be logged.

This commit is contained in:
Nolan Darilek 2023-09-09 12:52:02 -05:00
parent a0875b7d5f
commit 4c3ba4d71c

View File

@ -18,12 +18,13 @@ fn setup(mut commands: Commands) {
#[cfg(windows)]
unsafe {
let mut active: *mut GUID = std::ptr::null_mut();
Power::PowerGetActiveScheme(None, &mut active);
Power::PowerGetActiveScheme(None, &mut active).expect("Failed to get active power scheme");
if let Some(active) = active.as_ref() {
let scheme = DefaultScheme(*active);
commands.insert_resource(scheme);
ctrlc::set_handler(move || {
Power::PowerSetActiveScheme(None, Some(active));
Power::PowerSetActiveScheme(None, Some(active))
.expect("Failed to set power scheme");
std::process::exit(1);
})
.expect("Failed to set exit handler");
@ -43,13 +44,15 @@ fn focus_change(
if event.focused {
#[cfg(windows)]
unsafe {
Power::PowerSetActiveScheme(None, Some(&GUID_MIN_POWER_SAVINGS));
Power::PowerSetActiveScheme(None, Some(&GUID_MIN_POWER_SAVINGS))
.expect("Failed to set power scheme");
}
} else {
#[cfg(windows)]
if config.restore_original_scheme_on_unfocus {
unsafe {
Power::PowerSetActiveScheme(None, Some(&**scheme));
Power::PowerSetActiveScheme(None, Some(&**scheme))
.expect("Failed to set power scheme");
}
}
}
@ -61,7 +64,8 @@ fn exit(mut exit: EventReader<AppExit>, scheme: Res<DefaultScheme>) {
for event in exit.iter() {
#[cfg(windows)]
unsafe {
Power::PowerSetActiveScheme(None, Some(&**scheme));
Power::PowerSetActiveScheme(None, Some(&**scheme))
.expect("Failed to restore original power scheme");
}
}
}