From 5a0a7a35d95ee495b0a869d39b00ca53e1b861a2 Mon Sep 17 00:00:00 2001 From: heyabinghyb Date: Fri, 11 Apr 2025 18:49:05 +0800 Subject: [PATCH 1/2] =?UTF-8?q?callbackloop=E7=BA=BF=E7=A8=8Bjoin?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: heyabinghyb --- frameworks/native/ohaudio/OHAudioCapturer.cpp | 5 +++-- frameworks/native/ohaudio/OHAudioStreamBuilder.cpp | 1 + 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/frameworks/native/ohaudio/OHAudioCapturer.cpp b/frameworks/native/ohaudio/OHAudioCapturer.cpp index 925b54315c..8cc96133fc 100644 --- a/frameworks/native/ohaudio/OHAudioCapturer.cpp +++ b/frameworks/native/ohaudio/OHAudioCapturer.cpp @@ -37,8 +37,7 @@ OH_AudioStream_Result OH_AudioCapturer_Release(OH_AudioCapturer* capturer) OHOS::AudioStandard::OHAudioCapturer *audioCapturer = convertCapturer(capturer); CHECK_AND_RETURN_RET_LOG(audioCapturer != nullptr, AUDIOSTREAM_ERROR_INVALID_PARAM, "convert capturer failed"); if (audioCapturer->Release()) { - delete audioCapturer; - audioCapturer = nullptr; + OHOS::AudioStandard::ObjectRefMap::DecreaseRef(audioCapturer); return AUDIOSTREAM_SUCCESS; } else { return AUDIOSTREAM_ERROR_ILLEGAL_STATE; @@ -449,6 +448,8 @@ void OHCapturerServiceDiedCallback::OnAudioPolicyServiceDied() void OHAudioCapturerModeCallback::OnReadData(size_t length) { OHAudioCapturer* audioCapturer = (OHAudioCapturer*)ohAudioCapturer_; + OHOS::AudioStandard::ObjectRefMap objectGuard(audioCapturer); + audioCapturer = objectGuard.GetPtr(); CHECK_AND_RETURN_LOG(audioCapturer != nullptr, "capturer client is nullptr"); CHECK_AND_RETURN_LOG((callbacks_.OH_AudioCapturer_OnReadData != nullptr) || onReadDataCallback_ != nullptr, "pointer to the fuction is nullptr"); diff --git a/frameworks/native/ohaudio/OHAudioStreamBuilder.cpp b/frameworks/native/ohaudio/OHAudioStreamBuilder.cpp index 963420ad2b..80a2fd37ae 100644 --- a/frameworks/native/ohaudio/OHAudioStreamBuilder.cpp +++ b/frameworks/native/ohaudio/OHAudioStreamBuilder.cpp @@ -488,6 +488,7 @@ OH_AudioStream_Result OHAudioStreamBuilder::Generate(OH_AudioCapturer **capturer OHAudioCapturer *audioCapturer = new OHAudioCapturer(); if (audioCapturer->Initialize(options)) { + OHOS::AudioStandard::ObjectRefMap::Insert(audioCapturer); audioCapturer->SetCapturerReadDataCallbackType(readDataCallbackType_); audioCapturer->SetCapturerStreamEventCallbackType(streamEventCallbackType_); audioCapturer->SetCapturerInterruptEventCallbackType(interruptCallbackType_); -- Gitee From f47726f770c285d72ac0ef462a87e78c5ba89c38 Mon Sep 17 00:00:00 2001 From: heyabinghyb Date: Mon, 14 Apr 2025 12:58:06 +0000 Subject: [PATCH 2/2] =?UTF-8?q?=E6=A3=80=E8=A7=86=E6=84=8F=E8=A7=81?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: heyabinghyb --- frameworks/native/ohaudio/OHAudioCapturer.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/frameworks/native/ohaudio/OHAudioCapturer.cpp b/frameworks/native/ohaudio/OHAudioCapturer.cpp index 8cc96133fc..dc15805211 100644 --- a/frameworks/native/ohaudio/OHAudioCapturer.cpp +++ b/frameworks/native/ohaudio/OHAudioCapturer.cpp @@ -449,7 +449,6 @@ void OHAudioCapturerModeCallback::OnReadData(size_t length) { OHAudioCapturer* audioCapturer = (OHAudioCapturer*)ohAudioCapturer_; OHOS::AudioStandard::ObjectRefMap objectGuard(audioCapturer); - audioCapturer = objectGuard.GetPtr(); CHECK_AND_RETURN_LOG(audioCapturer != nullptr, "capturer client is nullptr"); CHECK_AND_RETURN_LOG((callbacks_.OH_AudioCapturer_OnReadData != nullptr) || onReadDataCallback_ != nullptr, "pointer to the fuction is nullptr"); -- Gitee