Skip to content

Commit 5922fdc

Browse files
committed
Check states before setting them
1 parent 482f956 commit 5922fdc

File tree

3 files changed

+22
-8
lines changed

3 files changed

+22
-8
lines changed

src/main.rs

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -51,10 +51,17 @@ fn cmd_dgpu_set(m: &clap::ArgMatches) -> Result<()> {
5151
use clap::value_t_or_exit;
5252
let state = value_t_or_exit!(m, "state", sys::dgpu::PowerState);
5353

54-
sys::dgpu::Device::open()?.set_power(state)?;
54+
let dev = sys::dgpu::Device::open()?;
5555

56-
if !m.is_present("quiet") {
57-
println!("dGPU power set to '{}'", state);
56+
if state != dev.get_power()? {
57+
dev.set_power(state)?;
58+
59+
if !m.is_present("quiet") {
60+
println!("dGPU power set to '{}'", state);
61+
}
62+
63+
} else if !m.is_present("quiet") {
64+
println!("dGPU power already set to '{}', not changing", state);
5865
}
5966

6067
Ok(())
@@ -85,10 +92,17 @@ fn cmd_perf_set(m: &clap::ArgMatches) -> Result<()> {
8592
use clap::value_t_or_exit;
8693
let mode = value_t_or_exit!(m, "mode", sys::perf::Mode);
8794

88-
sys::perf::Device::open()?.set_mode(mode)?;
95+
let dev = sys::perf::Device::open()?;
8996

90-
if !m.is_present("quiet") {
91-
println!("Performance-mode set to '{}'", mode);
97+
if mode != dev.get_mode()? {
98+
dev.set_mode(mode)?;
99+
100+
if !m.is_present("quiet") {
101+
println!("Performance-mode set to '{}'", mode);
102+
}
103+
104+
} else if !m.is_present("quiet") {
105+
println!("Performance-mode already set to '{}', not changing", mode);
92106
}
93107

94108
Ok(())

src/sys/dgpu.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ use std::io::{Read, Write};
55
use crate::error::{Error, ErrorKind, Result, ResultExt};
66

77

8-
#[derive(Debug, Copy, Clone)]
8+
#[derive(Debug, Copy, Clone, PartialEq, Eq)]
99
pub enum PowerState {
1010
On,
1111
Off,

src/sys/perf.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ use std::io::{Read, Write};
55
use crate::error::{Error, ErrorKind, Result, ResultExt};
66

77

8-
#[derive(Debug, Copy, Clone)]
8+
#[derive(Debug, Copy, Clone, PartialEq, Eq)]
99
pub enum Mode {
1010
Normal,
1111
Battery,

0 commit comments

Comments
 (0)