Add emit-on-change tracker for the Windows polling sensor
This commit is contained in:
@@ -0,0 +1,21 @@
|
||||
package evidence
|
||||
|
||||
// foregroundTracker remembers the last observed foreground window so the
|
||||
// Windows polling Source emits only on change. hwnd is held as uintptr so this
|
||||
// file stays platform-neutral (it must build and test on Linux).
|
||||
type foregroundTracker struct {
|
||||
primed bool
|
||||
available bool
|
||||
hwnd uintptr
|
||||
title string
|
||||
}
|
||||
|
||||
// changed reports whether (available, hwnd, title) differs from the last
|
||||
// observation and records the new values. The first call always returns true.
|
||||
func (t *foregroundTracker) changed(available bool, hwnd uintptr, title string) bool {
|
||||
if t.primed && available == t.available && hwnd == t.hwnd && title == t.title {
|
||||
return false
|
||||
}
|
||||
t.primed, t.available, t.hwnd, t.title = true, available, hwnd, title
|
||||
return true
|
||||
}
|
||||
Reference in New Issue
Block a user