mirror of
https://github.com/Tencent/Hippy.git
synced 2026-10-29 14:10:47 +08:00
fix(vfs): fix vfs crash
This commit is contained in:
committed by
churchill-zhang
parent
9a6402e506
commit
63a3da9846
@@ -422,11 +422,12 @@ jboolean RunScriptFromUri(JNIEnv* j_env,
|
||||
auto bridge = std::any_cast<std::shared_ptr<Bridge>>(runtime->GetData(kBridgeSlot));
|
||||
auto ref = bridge->GetRef();
|
||||
runtime->GetScope()->SetUriLoader(loader);
|
||||
FOOTSTONE_CHECK(j_aasset_manager);
|
||||
auto asset_handler = std::make_shared<hippy::AssetHandler>();
|
||||
asset_handler->SetAAssetManager(j_env, j_aasset_manager);
|
||||
asset_handler->SetWorkerTaskRunner(runtime->GetEngine()->GetWorkerTaskRunner());
|
||||
loader->RegisterUriHandler(kAssetSchema, asset_handler);
|
||||
if (j_aasset_manager) {
|
||||
auto asset_handler = std::make_shared<hippy::AssetHandler>();
|
||||
asset_handler->SetAAssetManager(j_env, j_aasset_manager);
|
||||
asset_handler->SetWorkerTaskRunner(runtime->GetEngine()->GetWorkerTaskRunner());
|
||||
loader->RegisterUriHandler(kAssetSchema, asset_handler);
|
||||
}
|
||||
auto save_object = std::make_shared<JavaRef>(j_env, j_cb);
|
||||
auto is_local_file = j_aasset_manager != nullptr;
|
||||
auto func = [runtime, save_object_ = std::move(save_object), script_name,
|
||||
@@ -440,7 +441,7 @@ jboolean RunScriptFromUri(JNIEnv* j_env,
|
||||
.time_since_epoch()
|
||||
.count();
|
||||
|
||||
FOOTSTONE_DLOG(INFO) << "runScriptFromUri = " << (time_end - time_begin) << ", uri = " << uri;
|
||||
FOOTSTONE_DLOG(INFO) << "runScriptFromUri time = " << (time_end - time_begin) << ", uri = " << uri;
|
||||
if (flag) {
|
||||
hippy::bridge::CallJavaMethod(save_object_->GetObj(), INIT_CB_STATE::SUCCESS);
|
||||
} else {
|
||||
@@ -584,7 +585,7 @@ jint OnCreateVfs(JNIEnv* j_env, __unused jobject j_object, jobject j_vfs_manager
|
||||
|
||||
void OnDestroyVfs(__unused JNIEnv* j_env, __unused jobject j_object, jint j_id) {
|
||||
auto id = footstone::checked_numeric_cast<jint, uint32_t>(j_id);
|
||||
bool flag = JniDelegateHandler::GetJniDelegateHandlerMap().Erase(id);
|
||||
bool flag = hippy::global_data_holder.Erase(id);
|
||||
FOOTSTONE_DCHECK(flag);
|
||||
}
|
||||
|
||||
|
||||
@@ -59,15 +59,11 @@ class JniDelegateHandler : public UriHandler, public std::enable_shared_from_thi
|
||||
static inline AsyncWrapperMap& GetAsyncWrapperMap() {
|
||||
return wrapper_map_;
|
||||
}
|
||||
static inline JniDelegateHandlerMap& GetJniDelegateHandlerMap() {
|
||||
return delegate_map_;
|
||||
}
|
||||
|
||||
private:
|
||||
std::shared_ptr<JavaRef> delegate_;
|
||||
static std::atomic<uint32_t> request_id_;
|
||||
static AsyncWrapperMap wrapper_map_;
|
||||
static JniDelegateHandlerMap delegate_map_;
|
||||
};
|
||||
|
||||
void OnJniDelegateCallback(JNIEnv* j_env, __unused jobject j_object, jobject j_holder);
|
||||
|
||||
@@ -99,7 +99,6 @@ using SyncContext = hippy::vfs::UriHandler::SyncContext;
|
||||
|
||||
JniDelegateHandler::AsyncWrapperMap JniDelegateHandler::wrapper_map_;
|
||||
std::atomic<uint32_t> JniDelegateHandler::request_id_ = 1;
|
||||
JniDelegateHandler::JniDelegateHandlerMap JniDelegateHandler::delegate_map_;
|
||||
|
||||
std::atomic<uint32_t> g_delegate_id = 1;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user