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,