diff --git a/main.go b/main.go index c306a88..9c906a5 100644 --- a/main.go +++ b/main.go @@ -421,14 +421,13 @@ func main() { if p.PID == myPID || p.PID == 0 { continue } - if _, ok := blocked[p.PID]; ok { - continue - } h, err := openProc(p.PID, ProcessQueryLimitedInformation) if err != nil { - blocked[p.PID] = p.Name - logf("BLOCK %s (PID %d): %v (added to exclusion list)", p.Name, p.PID, err) + if _, ok := blocked[p.PID]; !ok { + blocked[p.PID] = p.Name + logf("BLOCK %s (PID %d): %v (added to exclusion list)", p.Name, p.PID, err) + } continue } @@ -437,7 +436,9 @@ func main() { r, _, e := procGetMemInfo.Call(uintptr(h), uintptr(unsafe.Pointer(&m)), uintptr(unsafe.Sizeof(m))) if r == 0 { closeH(h) - logf("GetProcessMemoryInfo(%d) error: %v", p.PID, e) + if _, ok := blocked[p.PID]; !ok { + logf("GetProcessMemoryInfo(%d) error: %v", p.PID, e) + } continue } closeH(h) @@ -457,9 +458,17 @@ func main() { for _, pr := range procList { p := pr.info rssBytes := pr.rss + isBlocked := false + if _, ok := blocked[p.PID]; ok { + isBlocked = true + } if _, ok := gameProcs[p.PID]; ok { if hasGame { + if isBlocked { + logf("GAME %s (PID %d) RSS=%s — tracked as game (blocked)", p.Name, p.PID, formatMemSize(rssBytes)) + continue + } h, err := openProc(p.PID, ProcessQueryLimitedInformation) if err != nil { continue @@ -491,6 +500,9 @@ func main() { } if hasGame { + if isBlocked { + continue + } h, err := openProc(p.PID, ProcessQueryLimitedInformation) if err != nil { continue @@ -522,6 +534,10 @@ func main() { continue } + if isBlocked { + continue + } + if _, ok := promoted[p.PID]; ok { continue }