From: Pawel Wasowski Date: Wed, 4 Aug 2021 14:49:28 +0000 (+0200) Subject: [ML][Single] Fix invokeAsync X-Git-Tag: submit/tizen/20210806.090850~3 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=6817c3eb0ada9ee92c3c25ba93fdbe3263dc9ac0;p=platform%2Fcore%2Fapi%2Fwebapi-plugins.git [ML][Single] Fix invokeAsync invokeAsync implementation did not should copy the input TensorsData object, as it was supposed to. This commit adds copying [Verification] Tested with the snippet below several times - the outputs of invoke and invokeAsync were always identical: var tensorsData; var model; function errorCallback(error) { console.log("Error during invokeAsync: " + error.message); } function isSameArray(a, b) { if(a.length != b.length) { return false; } for(var i=0 ; i Math.floor(Math.random() * 255)); var rgb = new Uint8Array(randomData); tensorsData.setTensorRawData(0, rgb); model.invokeAsync(tensorsData, successCallback, errorCallback); }; Change-Id: Iff0d39ca6be9e1c5d2ff3c9f9fc3d061d49377c5 --- diff --git a/src/ml/ml_instance.cc b/src/ml/ml_instance.cc index 5cd456c6..27f74b09 100644 --- a/src/ml/ml_instance.cc +++ b/src/ml/ml_instance.cc @@ -896,7 +896,8 @@ void MlInstance::MLSingleShotInvoke(const picojson::value& args, picojson::objec if (async && in_tensors_data) { // in case of async flow need to prevent destroying entry data during invoke // from JS, creation of a copy - in_tensors_data = GetTensorsInfoManager().CreateTensorsData(in_tensors_data->GetTensorsInfo()); + in_tensors_data = GetTensorsInfoManager().CloneNativeTensorWithData( + in_tensors_data->GetTensorsInfo()->Handle(), in_tensors_data->Handle()); } if (nullptr == in_tensors_data) { LogAndReportError(PlatformResult(ErrorCode::ABORT_ERR, "Internal TensorsData error"), &out,