From 1ab47f14450793ca414cdf9fd9b2d51ef47491dc Mon Sep 17 00:00:00 2001 From: Haesu Gwon Date: Tue, 11 Oct 2022 15:54:42 +0900 Subject: [PATCH] [WebRTC] Disable MediaPacket native handle destroy (#4642) * [WebRTC] Disable MediaPacket native handle destroy --- src/Tizen.Multimedia.Remoting/WebRTC/MediaPacketSource.cs | 3 +++ src/Tizen.Multimedia/MediaTool/MediaPacket.cs | 15 ++++++++++++++- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/src/Tizen.Multimedia.Remoting/WebRTC/MediaPacketSource.cs b/src/Tizen.Multimedia.Remoting/WebRTC/MediaPacketSource.cs index 6ead6c7..09fea00 100755 --- a/src/Tizen.Multimedia.Remoting/WebRTC/MediaPacketSource.cs +++ b/src/Tizen.Multimedia.Remoting/WebRTC/MediaPacketSource.cs @@ -225,6 +225,9 @@ namespace Tizen.Multimedia.Remoting throw new ArgumentException("Audio is not configured with the current source."); } + // MediaPacket native handle will be destroyed internally in native webrtc fw + packet.DisableNativeHandleDestroy(); + NativeWebRTC.PushMediaPacket(WebRtc.Handle, SourceId.Value, packet.GetHandle()). ThrowIfFailed("Failed to push the packet to the WebRTC"); } diff --git a/src/Tizen.Multimedia/MediaTool/MediaPacket.cs b/src/Tizen.Multimedia/MediaTool/MediaPacket.cs index b492ade..affdc4d 100644 --- a/src/Tizen.Multimedia/MediaTool/MediaPacket.cs +++ b/src/Tizen.Multimedia/MediaTool/MediaPacket.cs @@ -547,7 +547,11 @@ namespace Tizen.Multimedia if (_handle != IntPtr.Zero) { - Native.Unref(_handle); + if (_isNativeHandleDestroyEnabled) + { + Native.Unref(_handle); + } + _handle = IntPtr.Zero; } @@ -565,6 +569,15 @@ namespace Tizen.Multimedia throw new ObjectDisposedException("This packet has already been disposed."); } } + + private bool _isNativeHandleDestroyEnabled = true; + /// + /// Disables native handle destruction when native fw destroys media packet handle itself. + /// + internal void DisableNativeHandleDestroy() + { + _isNativeHandleDestroyEnabled = false; + } #endregion internal IntPtr GetHandle() -- 2.7.4