diff --git a/shell/platform/ohos/flutter_embedding/flutter/src/main/cpp/types/libflutter/index.d.ets b/shell/platform/ohos/flutter_embedding/flutter/src/main/cpp/types/libflutter/index.d.ets index 4453a518b07c2edcf7f3683d4c308adc1804cd1e..c53957c7aaee4402afa25585c981d83830351ce5 100644 --- a/shell/platform/ohos/flutter_embedding/flutter/src/main/cpp/types/libflutter/index.d.ets +++ b/shell/platform/ohos/flutter_embedding/flutter/src/main/cpp/types/libflutter/index.d.ets @@ -52,7 +52,8 @@ export const nativeSpawn: ( entrypointFunctionName: string, pathToEntrypointFunction: string, initialRoute: string, - entrypointArgs: Array + entrypointArgs: Array, + napi: FlutterNapi ) => number; export const nativeRunBundleAndSnapshotFromLibrary: ( @@ -98,4 +99,4 @@ export const nativeXComponentDetachFlutterEngine: (xcomponentId: number, nativeS */ export const nativeDestroy: ( nativeShellHolderId: number -) => void; +) => void; \ No newline at end of file diff --git a/shell/platform/ohos/flutter_embedding/flutter/src/main/cpp/types/libflutter/index_actual.d.ets b/shell/platform/ohos/flutter_embedding/flutter/src/main/cpp/types/libflutter/index_actual.d.ets index afab18030d24d6263139b464623c36cbd8ace369..d3f5c0a65d28cebdd24c8c79f062c64e0d490e65 100644 --- a/shell/platform/ohos/flutter_embedding/flutter/src/main/cpp/types/libflutter/index_actual.d.ets +++ b/shell/platform/ohos/flutter_embedding/flutter/src/main/cpp/types/libflutter/index_actual.d.ets @@ -73,7 +73,8 @@ export const nativeSpawn: ( entrypointFunctionName: string, pathToEntrypointFunction: string, initialRoute: string, - entrypointArgs: Array + entrypointArgs: Array, + napi: FlutterNapi ) => number; /** diff --git a/shell/platform/ohos/flutter_embedding/flutter/src/main/ets/embedding/engine/FlutterNapi.ets b/shell/platform/ohos/flutter_embedding/flutter/src/main/ets/embedding/engine/FlutterNapi.ets index d1fbaa8039e86fbe2b44e102fbe87b4c492fd048..4b8d9a3a54eb434722429bae904d14da1226b2d9 100644 --- a/shell/platform/ohos/flutter_embedding/flutter/src/main/ets/embedding/engine/FlutterNapi.ets +++ b/shell/platform/ohos/flutter_embedding/flutter/src/main/ets/embedding/engine/FlutterNapi.ets @@ -219,8 +219,8 @@ export default class FlutterNapi { } spawn(entrypointFunctionName: string, pathToEntrypointFunction: string, initialRoute: string, entrypointArgs: Array): FlutterNapi { - let shellHolderId: number = flutter.nativeSpawn(this.nativeShellHolderId, entrypointFunctionName, pathToEntrypointFunction, initialRoute, entrypointArgs) let flutterNapi = new FlutterNapi() + let shellHolderId: number = flutter.nativeSpawn(this.nativeShellHolderId, entrypointFunctionName, pathToEntrypointFunction, initialRoute, entrypointArgs, flutterNapi) flutterNapi.nativeShellHolderId = shellHolderId return flutterNapi; } diff --git a/shell/platform/ohos/napi/platform_view_ohos_napi.cpp b/shell/platform/ohos/napi/platform_view_ohos_napi.cpp index f6cea7a9763da4eb49eacc807e9317eb629f9fe3..3572bee972dbbea2ffeb24e13ac504add33ac409 100644 --- a/shell/platform/ohos/napi/platform_view_ohos_napi.cpp +++ b/shell/platform/ohos/napi/platform_view_ohos_napi.cpp @@ -616,6 +616,8 @@ napi_value PlatformViewOHOSNapi::nativeSpawn(napi_env env, napi_callback_info in } std::shared_ptr napi_facade = std::make_shared(env); + napi_create_reference(env, args[5], 1, &(napi_facade->ref_napi_obj_)); + auto spawned_shell_holder = OHOS_SHELL_HOLDER->Spawn( napi_facade, entrypoint, libraryUrl, initial_route, entrypoint_args); @@ -1519,4 +1521,4 @@ napi_value PlatformViewOHOSNapi::nativeXComponentDetachFlutterEngine( return nullptr; } -} // namespace flutter +} // namespace flutter \ No newline at end of file diff --git a/shell/platform/ohos/ohos_image_generator.cpp b/shell/platform/ohos/ohos_image_generator.cpp index 33d419af417344049b97ee1e3f27c04f1ba9141e..46211d3d751df61c4e3f26fae8e9c123d085437d 100755 --- a/shell/platform/ohos/ohos_image_generator.cpp +++ b/shell/platform/ohos/ohos_image_generator.cpp @@ -157,14 +157,10 @@ napi_value OHOSImageGenerator::NativeImageDecodeCallback( napi_get_cb_info(env, info, &argc, args, nullptr, nullptr); if (status != napi_ok) { LOGE("NativeImageDecodeCallback napi_get_cb_info error"); - generator->native_callback_latch_.Signal(); - return nullptr; } if (argc != 4) { FML_LOG(ERROR) << "argc is error"; - generator->native_callback_latch_.Signal(); - return nullptr; } // unwarp object