Browse Source

These need to be set on each loop iteration as select() will modify them

Eric Balsa 3 tháng trước cách đây
mục cha
commit
0476d219a3
1 tập tin đã thay đổi với 3 bổ sung2 xóa
  1. 3 2
      v4l2/syscalls.go

+ 3 - 2
v4l2/syscalls.go

@@ -94,9 +94,10 @@ func WaitForRead(dev Device) <-chan struct{} {
 	go func(fd uintptr) {
 		defer close(sigChan)
 		var fdsRead sys.FdSet
-		fdsRead.Set(int(fd))
-		tv := sys.Timeval{Sec: 2, Usec: 0}
 		for {
+			fdsRead.Zero()
+			fdsRead.Set(int(fd))
+			tv := sys.Timeval{Sec: 2, Usec: 0}
 			_, errno := sys.Select(int(fd+1), &fdsRead, nil, nil, &tv)
 			if errno == sys.EINTR {
 				continue