fix(core): take over agent, reuse callbacks

- Kill running agents before replace
- Retry copy with backoff while locked
- Reuse syscall callbacks at package scope
- Add callback regression test
This commit is contained in:
2026-09-02 00:00:24 +03:00
parent ac31e52a8c
commit 536ea9a53e
10 changed files with 281 additions and 29 deletions
+3 -1
View File
@@ -161,7 +161,9 @@ func attachInputDesktop() error {
var (
enumMu sync.Mutex
enumBuf []rect
enumCB = syscall.NewCallback(enumMonitor)
// ponytail: syscall.NewCallback is process-global and never freed (~2000 max).
// A closure here every frame is a fatal "too many callback functions".
enumCB = syscall.NewCallback(enumMonitor)
)
func enumMonitor(_ uintptr, _ uintptr, monitorRect uintptr, _ uintptr) uintptr {