File tree Expand file tree Collapse file tree 2 files changed +8
-3
lines changed
Expand file tree Collapse file tree 2 files changed +8
-3
lines changed Original file line number Diff line number Diff line change @@ -10,6 +10,7 @@ cdef class CLContext:
1010
1111cdef class VisionBuf:
1212 cdef cppVisionBuf * buf
13+ cdef object _owner
1314
1415 @staticmethod
15- cdef create(cppVisionBuf* )
16+ cdef create(cppVisionBuf* , object )
Original file line number Diff line number Diff line change @@ -30,11 +30,15 @@ cpdef enum VisionStreamType:
3030
3131cdef class VisionBuf:
3232 @staticmethod
33- cdef create(cppVisionBuf * cbuf):
33+ cdef create(cppVisionBuf * cbuf, object owner ):
3434 buf = VisionBuf()
3535 buf.buf = cbuf
36+ buf._owner = owner # Keep a reference to the owner to manage lifetime
3637 return buf
3738
39+ def __dealloc__ (self ):
40+ self ._owner = None # Explicitly release the reference
41+
3842 @property
3943 def data (self ):
4044 return np.asarray(< cnp.uint8_t[:self .buf.len]> self .buf.addr)
@@ -155,7 +159,7 @@ cdef class VisionIpcClient:
155159 buf = self .client.recv(& self .extra, timeout_ms)
156160 if not buf:
157161 return None
158- return VisionBuf.create(buf)
162+ return VisionBuf.create(buf, self )
159163
160164 def connect (self , bool blocking ):
161165 return self .client.connect(blocking)
You can’t perform that action at this time.
0 commit comments