Fail loudly on a touch read, stop the workers before their sockets close, and file down the small edges

This commit is contained in:
flamingcow
2026-08-04 22:26:07 -07:00
parent 12cef6a89b
commit 7b2601a02e
5 changed files with 38 additions and 20 deletions
+8 -12
View File
@@ -170,23 +170,24 @@ func findDisplay(fd int) (connID, crtcID uint32, err error) {
}
// The card number is not stable across machines, so the card driving a
// connected display is the one we want.
func openCard() (int, error) {
// connected display is the one we want, and the display it found comes back
// with it.
func openCard() (fd int, connID, crtcID uint32, err error) {
paths, err := filepath.Glob("/dev/dri/card*")
if err != nil {
return -1, err
return -1, 0, 0, err
}
for _, p := range paths {
fd, err := unix.Open(p, unix.O_RDWR|unix.O_CLOEXEC, 0)
if err != nil {
continue
}
if _, _, err := findDisplay(fd); err == nil {
return fd, nil
if connID, crtcID, err := findDisplay(fd); err == nil {
return fd, connID, crtcID, nil
}
unix.Close(fd)
}
return -1, fmt.Errorf("no drm device with a connected display")
return -1, 0, 0, fmt.Errorf("no drm device with a connected display")
}
func (fb *framebuffer) addScanout(i int) error {
@@ -223,7 +224,7 @@ func (fb *framebuffer) addScanout(i int) error {
}
func openFramebuffer() (*framebuffer, error) {
fd, err := openCard()
fd, connID, crtcID, err := openCard()
if err != nil {
return nil, err
}
@@ -236,11 +237,6 @@ func openFramebuffer() (*framebuffer, error) {
return nil, fmt.Errorf("take drm master: %w", err)
}
connID, crtcID, err := findDisplay(fd)
if err != nil {
fb.close()
return nil, err
}
mode, err := preferredMode(fd, connID)
if err != nil {
fb.close()