mirror of
https://github.com/rustdesk/rustdesk.git
synced 2026-03-29 16:11:01 +03:00
keep server device awake if have connection
Signed-off-by: 21pages <pages21@163.com>
This commit is contained in:
@@ -40,7 +40,9 @@ use winapi::{
|
||||
winbase::*,
|
||||
wingdi::*,
|
||||
winnt::{
|
||||
TokenElevation, HANDLE, PROCESS_QUERY_LIMITED_INFORMATION, TOKEN_ELEVATION, TOKEN_QUERY,
|
||||
TokenElevation, ES_AWAYMODE_REQUIRED, ES_CONTINUOUS, ES_DISPLAY_REQUIRED,
|
||||
ES_SYSTEM_REQUIRED, HANDLE, PROCESS_QUERY_LIMITED_INFORMATION, TOKEN_ELEVATION,
|
||||
TOKEN_QUERY,
|
||||
},
|
||||
winreg::HKEY_CURRENT_USER,
|
||||
winuser::*,
|
||||
@@ -2180,6 +2182,30 @@ pub fn is_process_consent_running() -> ResultType<bool> {
|
||||
.output()?;
|
||||
Ok(output.status.success() && !output.stdout.is_empty())
|
||||
}
|
||||
pub struct WakeLock;
|
||||
// Failed to compile keepawake-rs on i686
|
||||
impl WakeLock {
|
||||
pub fn new(display: bool, idle: bool, sleep: bool) -> Self {
|
||||
let mut flag = ES_CONTINUOUS;
|
||||
if display {
|
||||
flag |= ES_DISPLAY_REQUIRED;
|
||||
}
|
||||
if idle {
|
||||
flag |= ES_SYSTEM_REQUIRED;
|
||||
}
|
||||
if sleep {
|
||||
flag |= ES_AWAYMODE_REQUIRED;
|
||||
}
|
||||
unsafe { SetThreadExecutionState(flag) };
|
||||
WakeLock {}
|
||||
}
|
||||
}
|
||||
|
||||
impl Drop for WakeLock {
|
||||
fn drop(&mut self) {
|
||||
unsafe { SetThreadExecutionState(ES_CONTINUOUS) };
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
|
||||
Reference in New Issue
Block a user