File tree Expand file tree Collapse file tree 2 files changed +9
-3
lines changed
Expand file tree Collapse file tree 2 files changed +9
-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 @@ -29,12 +29,17 @@ cpdef enum VisionStreamType:
2929
3030
3131cdef class VisionBuf:
32+
3233 @staticmethod
33- cdef create(cppVisionBuf * cbuf):
34+ cdef create(cppVisionBuf * cbuf, object owner ):
3435 buf = VisionBuf()
3536 buf.buf = cbuf
37+ buf._owner = owner # Keep a reference to the owner to manage lifetime
3638 return buf
3739
40+ def __dealloc__ (self ):
41+ self ._owner = None # explicitly release the reference
42+
3843 @property
3944 def data (self ):
4045 return np.asarray(< cnp.uint8_t[:self .buf.len]> self .buf.addr)
@@ -155,7 +160,7 @@ cdef class VisionIpcClient:
155160 buf = self .client.recv(& self .extra, timeout_ms)
156161 if not buf:
157162 return None
158- return VisionBuf.create(buf)
163+ return VisionBuf.create(buf, self )
159164
160165 def connect (self , bool blocking ):
161166 return self .client.connect(blocking)
You can’t perform that action at this time.
0 commit comments