diff --git a/frameworks/js/avplayer/avplayer_napi.cpp b/frameworks/js/avplayer/avplayer_napi.cpp index f57526823d0ce2d76e09c1636f587320f83e9d65..f2d846ebb4222a6b36eb0f88e9e302e47b52deee 100644 --- a/frameworks/js/avplayer/avplayer_napi.cpp +++ b/frameworks/js/avplayer/avplayer_napi.cpp @@ -716,6 +716,7 @@ napi_value AVPlayerNapi::JsRelease(napi_env env, napi_callback_info info) size_t argCount = 1; AVPlayerNapi *jsPlayer = AVPlayerNapi::GetJsInstanceWithParameter(env, info, argCount, args); CHECK_AND_RETURN_RET_LOG(jsPlayer != nullptr, result, "failed to GetJsInstance"); + jsPlayer->isReadyReleased_.store(true); promiseCtx->callbackRef = CommonNapi::CreateReference(env, args[0]); promiseCtx->deferred = CommonNapi::CreatePromise(env, promiseCtx->callbackRef, result); MEDIA_LOGI("0x%{public}06" PRIXPTR " JsRelease EnqueueTask In", FAKE_POINTER(jsPlayer)); @@ -3394,6 +3395,11 @@ napi_value AVPlayerNapi::JsIsSeekContinuousSupported(napi_env env, napi_callback size_t argCount = 0; AVPlayerNapi *jsPlayer = AVPlayerNapi::GetJsInstanceWithParameter(env, info, argCount, nullptr); CHECK_AND_RETURN_RET_LOG(jsPlayer != nullptr, result, "failed to GetJsInstance"); + if (jsPlayer->isReadyReleased_.load()) { + status = napi_get_boolean(env, false, &result); + CHECK_AND_RETURN_RET_LOG(status == napi_ok, result, "napi_get_boolean failed"); + return result; + } if (jsPlayer->player_ != nullptr) { isSeekContinuousSupported = jsPlayer->player_->IsSeekContinuousSupported(); status = napi_get_boolean(env, isSeekContinuousSupported, &result); diff --git a/frameworks/js/avplayer/avplayer_napi.h b/frameworks/js/avplayer/avplayer_napi.h index 6c9a42aa8f1b4bde5637c8f85f41bc793933b444..2688e517172d52d194deb0378e5c52962de3bf2a 100644 --- a/frameworks/js/avplayer/avplayer_napi.h +++ b/frameworks/js/avplayer/avplayer_napi.h @@ -435,6 +435,8 @@ private: int32_t mode_ = SWITCH_SMOOTH; std::mutex syncMutex_; bool getApiVersionFlag_ = true; + + std::atomic isReadyReleased_ = false; }; } // namespace Media } // namespace OHOS