diff --git a/frameworks/native/capi/screencapture/native_avscreen_capture.cpp b/frameworks/native/capi/screencapture/native_avscreen_capture.cpp index 666ae2bac8b0fc961150246b39f70a5b7f5524dd..53c590fd617e550f639c1733af12ddf215e8d334 100644 --- a/frameworks/native/capi/screencapture/native_avscreen_capture.cpp +++ b/frameworks/native/capi/screencapture/native_avscreen_capture.cpp @@ -573,6 +573,8 @@ OH_AVSCREEN_CAPTURE_ErrCode OH_AVScreenCapture_AcquireAudioBuffer(struct OH_AVSc OH_AudioBuffer **audiobuffer, OH_AudioCaptureSourceType type) { CHECK_AND_RETURN_RET_LOG(capture != nullptr, AV_SCREEN_CAPTURE_ERR_INVALID_VAL, "input capture is nullptr!"); + CHECK_AND_RETURN_RET_LOG(audiobuffer != nullptr && (*audiobuffer != nullptr), AV_SCREEN_CAPTURE_ERR_INVALID_VAL, + "input OH_AudioBuffer **audiobuffer is nullptr!"); struct ScreenCaptureObject *screenCaptureObj = reinterpret_cast(capture); CHECK_AND_RETURN_RET_LOG(screenCaptureObj->screenCapture_ != nullptr, diff --git a/services/services/screen_capture/server/screen_capture_server.cpp b/services/services/screen_capture/server/screen_capture_server.cpp index d6661275a0e7af9a28a8e44195003045f89e71ec..80e8554481ada65a39874ce9c2e9252b1743c50a 100644 --- a/services/services/screen_capture/server/screen_capture_server.cpp +++ b/services/services/screen_capture/server/screen_capture_server.cpp @@ -556,7 +556,7 @@ int32_t ScreenCaptureServer::RequestUserPrivacyAuthority() return MSERR_OK; } -#ifdef SUPPORT_SCREEN_CAPTURE_WINDOW_NOTIFICATION_NOTIFICATION +#ifdef SUPPORT_SCREEN_CAPTURE_WINDOW_NOTIFICATION if (isPrivacyAuthorityEnabled_) { return StartPrivacyWindow(); } diff --git a/test/unittest/screen_capture_test/capi/src/screen_capture_capi_mock.cpp b/test/unittest/screen_capture_test/capi/src/screen_capture_capi_mock.cpp index 0f61445799d5fdf3f18e8469568c648a3b62eef6..3ef9005319e45188d61551cdf13ee112712f4162 100644 --- a/test/unittest/screen_capture_test/capi/src/screen_capture_capi_mock.cpp +++ b/test/unittest/screen_capture_test/capi/src/screen_capture_capi_mock.cpp @@ -218,9 +218,12 @@ int32_t ScreenCaptureCapiMock::AcquireAudioBuffer(std::shared_ptr & } auto t_type = static_cast(type); int32_t ret = OH_AVScreenCapture_AcquireAudioBuffer(screenCapture_, &buffer, t_type); - audioBuffer = - std::make_shared(buffer->buf, buffer->size, buffer->timestamp, - static_cast(buffer->type)); + if (ret == AV_SCREEN_CAPTURE_ERR_OK) { + // If ret is not AV_SCREEN_CAPTURE_ERR_OK, the object referenced by buffer is not initialized and can't be used. + audioBuffer = + std::make_shared(buffer->buf, buffer->size, buffer->timestamp, + static_cast(buffer->type)); + } free(buffer); buffer = nullptr; return ret; diff --git a/test/unittest/screen_capture_test/screen_capture_unittest/src/screen_capture_unit_test.cpp b/test/unittest/screen_capture_test/screen_capture_unittest/src/screen_capture_unit_test.cpp index 3af28598ead7ef008b0b224740a56ef9786b43ca..d3765fcff94654f05e7d9cf6e2f2f0b5afa80411 100644 --- a/test/unittest/screen_capture_test/screen_capture_unittest/src/screen_capture_unit_test.cpp +++ b/test/unittest/screen_capture_test/screen_capture_unittest/src/screen_capture_unit_test.cpp @@ -42,11 +42,12 @@ void ScreenCaptureUnitTestCallback::OnAudioBufferAvailable(bool isReady, AudioCa std::shared_ptr audioBuffer = nullptr; if (screenCapture_->AcquireAudioBuffer(audioBuffer, type) == MSERR_OK) { if (audioBuffer == nullptr) { - cout << "AcquireAudioBuffer failed, audio buffer empty" << endl; + cout << "AcquireAudioBuffer failed, audio buffer empty, PLEASE CHECK IF IT IS OK!!!" << endl; + } else { + cout << "AcquireAudioBuffer, audioBufferLen:" << audioBuffer->length << ", timestampe:" + << audioBuffer->timestamp << ", audioSourceType:" << audioBuffer->sourcetype << endl; + DumpAudioBuffer(audioBuffer); } - cout << "AcquireAudioBuffer, audioBufferLen:" << audioBuffer->length << ", timestampe:" - << audioBuffer->timestamp << ", audioSourceType:" << audioBuffer->sourcetype << endl; - DumpAudioBuffer(audioBuffer); } if (aFlag_ == 1) { screenCapture_->ReleaseAudioBuffer(type);