From dfda94e462678d5549dd0471bdc75efb05adb887 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20Monnom?= Date: Mon, 24 Nov 2025 14:47:21 -0800 Subject: [PATCH] dispose FfiHandle immediately --- livekit-rtc/livekit/rtc/_ffi_client.py | 3 +-- livekit-rtc/livekit/rtc/audio_frame.py | 2 +- livekit-rtc/livekit/rtc/room.py | 2 +- livekit-rtc/livekit/rtc/video_frame.py | 2 +- 4 files changed, 4 insertions(+), 5 deletions(-) diff --git a/livekit-rtc/livekit/rtc/_ffi_client.py b/livekit-rtc/livekit/rtc/_ffi_client.py index a1c60549..e7abef81 100644 --- a/livekit-rtc/livekit/rtc/_ffi_client.py +++ b/livekit-rtc/livekit/rtc/_ffi_client.py @@ -241,6 +241,5 @@ def request(self, req: proto_ffi.FfiRequest) -> proto_ffi.FfiResponse: resp_data = ctypes.string_at(resp_ptr, resp_len.value) resp = proto_ffi.FfiResponse() resp.ParseFromString(resp_data) - - FfiHandle(handle) + FfiHandle(handle).dispose() return resp diff --git a/livekit-rtc/livekit/rtc/audio_frame.py b/livekit-rtc/livekit/rtc/audio_frame.py index 7b87a8d6..3ed9a461 100644 --- a/livekit-rtc/livekit/rtc/audio_frame.py +++ b/livekit-rtc/livekit/rtc/audio_frame.py @@ -90,7 +90,7 @@ def _from_owned_info(owned_info: proto_audio.OwnedAudioFrameBuffer) -> "AudioFra size = info.num_channels * info.samples_per_channel cdata = (ctypes.c_int16 * size).from_address(info.data_ptr) data = bytearray(cdata) - FfiHandle(owned_info.handle.id) + FfiHandle(owned_info.handle.id).dispose() return AudioFrame(data, info.sample_rate, info.num_channels, info.samples_per_channel) def _proto_info(self) -> proto_audio.AudioFrameBufferInfo: diff --git a/livekit-rtc/livekit/rtc/room.py b/livekit-rtc/livekit/rtc/room.py index 7881a5af..8a919ee4 100644 --- a/livekit-rtc/livekit/rtc/room.py +++ b/livekit-rtc/livekit/rtc/room.py @@ -811,7 +811,7 @@ def _on_room_event(self, event: proto_room.RoomEvent): ).contents data = bytes(native_data) - FfiHandle(owned_buffer_info.handle.id) + FfiHandle(owned_buffer_info.handle.id).dispose() rparticipant = cast( RemoteParticipant, self._retrieve_remote_participant(packet.participant_identity), diff --git a/livekit-rtc/livekit/rtc/video_frame.py b/livekit-rtc/livekit/rtc/video_frame.py index c2762576..76b66625 100644 --- a/livekit-rtc/livekit/rtc/video_frame.py +++ b/livekit-rtc/livekit/rtc/video_frame.py @@ -105,7 +105,7 @@ def _from_owned_info(owned_info: proto_video.OwnedVideoBuffer) -> "VideoFrame": type=info.type, data=data, ) - FfiHandle(owned_info.handle.id) + FfiHandle(owned_info.handle.id).dispose() return frame def _proto_info(self) -> proto_video.VideoBufferInfo: