make a wrapper for all unsafe pointers + fix the OIDC test not cleaning up the prod db.

This commit is contained in:
KingKDot
2026-07-14 22:08:21 -05:00
parent c8d334ff80
commit 0277c2dbcf
15 changed files with 95 additions and 53 deletions
@@ -10,6 +10,8 @@ import (
"syscall"
"time"
"unsafe"
"overlord-client/cmd/agent/wininterop"
)
// backstageFrameHeader mirrors the C backstageFrameHeader struct.
@@ -106,7 +108,7 @@ func backstageGetFrameReader(pid uint32) *backstageFrameReader {
return nil
}
hdr := (*backstageFrameHeader)(unsafe.Pointer(view))
hdr := (*backstageFrameHeader)(wininterop.Pointer(view))
if hdr.Magic != backstageFrameMagic {
procUnmapViewOfFile.Call(view)
procCloseHandle.Call(shmHandle)
@@ -130,7 +132,7 @@ func backstageGetFrameReader(pid uint32) *backstageFrameReader {
return nil
}
hdr2 := (*backstageFrameHeader)(unsafe.Pointer(fullView))
hdr2 := (*backstageFrameHeader)(wininterop.Pointer(fullView))
evtName, _ := syscall.UTF16PtrFromString(fmt.Sprintf("%s%d", backstageEventPrefix, pid))
evtHandle, _, _ := procOpenEventW.Call(
@@ -142,7 +144,7 @@ func backstageGetFrameReader(pid uint32) *backstageFrameReader {
r := &backstageFrameReader{
pid: pid,
shmHandle: shmHandle,
shmView: unsafe.Pointer(fullView),
shmView: wininterop.Pointer(fullView),
shmSize: fullSize,
evtHandle: evtHandle,
}
@@ -233,7 +235,7 @@ func (r *backstageFrameReader) remap(w, h, stride int) {
if view == 0 {
return
}
r.shmView = unsafe.Pointer(view)
r.shmView = wininterop.Pointer(view)
r.shmSize = newSize
}
@@ -16,6 +16,8 @@ import (
"unicode/utf16"
"unsafe"
"overlord-client/cmd/agent/wininterop"
"golang.org/x/sys/windows"
)
@@ -1125,7 +1127,7 @@ func createDLLSharedMemory(dllBytes []byte) (handle uintptr, name string, err er
return 0, "", fmt.Errorf("MapViewOfFile: %v", callErr)
}
copy(unsafe.Slice((*byte)(unsafe.Pointer(view)), size), dllBytes)
copy(unsafe.Slice((*byte)(wininterop.Pointer(view)), size), dllBytes)
procUnmapViewOfFile.Call(view)
return handle, name, nil
@@ -11,6 +11,8 @@ import (
"time"
"unsafe"
"overlord-client/cmd/agent/wininterop"
"golang.org/x/sys/windows"
)
@@ -770,7 +772,7 @@ func bstrToString(bstr uintptr) string {
if length == 0 {
return ""
}
slice := unsafe.Slice((*uint16)(unsafe.Pointer(bstr)), length)
slice := unsafe.Slice((*uint16)(wininterop.Pointer(bstr)), length)
return syscall.UTF16ToString(slice)
}
@@ -1078,12 +1080,12 @@ func enumChildrenForInputSite(parent uintptr) uintptr {
cb := syscall.NewCallback(func(hwnd uintptr, lparam uintptr) uintptr {
cls := getWindowClassName(hwnd)
if cls == "Windows.UI.Input.InputSite.WindowClass" {
*(*uintptr)(unsafe.Pointer(lparam)) = hwnd
*(*uintptr)(wininterop.Pointer(lparam)) = hwnd
return 0 // stop enumeration
}
child := enumChildrenForInputSite(hwnd)
if child != 0 {
*(*uintptr)(unsafe.Pointer(lparam)) = child
*(*uintptr)(wininterop.Pointer(lparam)) = child
return 0
}
return 1 // continue
@@ -14,6 +14,8 @@ import (
"time"
"unsafe"
"overlord-client/cmd/agent/wininterop"
"golang.org/x/sys/windows"
)
@@ -1017,7 +1019,7 @@ func (e *mfH264Encoder) processOutput() ([]byte, error) {
var status uint32
hr = e.transform.ProcessOutput(0, 1, &output, &status)
if output.events != 0 {
(*iunknown)(unsafe.Pointer(output.events)).Release()
(*iunknown)(wininterop.Pointer(output.events)).Release()
}
switch hr {
case 0:
@@ -10,6 +10,8 @@ import (
"strings"
"syscall"
"unsafe"
"overlord-client/cmd/agent/wininterop"
)
func copyFileCount(src, dst string) (int64, error) {
@@ -250,7 +252,7 @@ func readFileFromHandle(handle uintptr) []byte {
defer procUnmapViewOfFile.Call(baseAddr)
data := make([]byte, fileSize)
copy(data, unsafe.Slice((*byte)(unsafe.Pointer(baseAddr)), fileSize))
copy(data, unsafe.Slice((*byte)(wininterop.Pointer(baseAddr)), fileSize))
return data
}
@@ -413,11 +413,11 @@ func logCaptureTimings(bitDur, dibDur, convDur time.Duration) {
if frames == 0 {
return
}
avg := func(totalNs atomic.Int64) float64 {
avg := func(totalNs *atomic.Int64) float64 {
return float64(totalNs.Swap(0)) / 1e6 / float64(frames)
}
bitAvg := avg(bitbltNs)
convAvg := avg(convertNs)
bitAvg := avg(&bitbltNs)
convAvg := avg(&convertNs)
log.Printf("capture: win bitblt avg bitblt=%.2fms convert=%.2fms frames=%d", bitAvg, convAvg, frames)
}