From 0673d3102ec50c7ec0fb2318709aac9a2776147a Mon Sep 17 00:00:00 2001 From: Anton Potekhin Date: Thu, 27 Apr 2023 09:02:08 +0300 Subject: [PATCH] Fixed prevention of sleep. --- server/cmd/preconfig_win.go | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/server/cmd/preconfig_win.go b/server/cmd/preconfig_win.go index 2de0405..ca31f4f 100644 --- a/server/cmd/preconfig_win.go +++ b/server/cmd/preconfig_win.go @@ -4,6 +4,7 @@ package main import ( + "runtime" "syscall" "time" @@ -21,12 +22,14 @@ var pulseTime = 60 * time.Second func Preconfig(kill bool) { go func() { + // need work on one thread because SetThreadExecutionState sets flag to thread. We need set and clear flag for same thread. + runtime.LockOSThread() // don't sleep/hibernate windows kernel32 := syscall.NewLazyDLL("kernel32.dll") setThreadExecStateProc := kernel32.NewProc("SetThreadExecutionState") currentExecState := uintptr(EsContinuous) normalExecutionState := uintptr(EsContinuous) - systemRequireState := uintptr(EsSystemRequired | EsContinuous) + systemRequireState := uintptr(EsSystemRequired | EsContinuous) pulse := time.NewTicker(pulseTime) for { select {