From 4d1ecdb6bc42bbb3c389399b2e2b1ad85f6aa299 Mon Sep 17 00:00:00 2001 From: Wonsik Jung Date: Thu, 22 Jun 2023 17:01:41 +0900 Subject: [PATCH] Fix the missing code to generation argv string in UI threading case. Fix the missing code to generation argv string for UI threading. This string is from NUI. Change-Id: I4c51b35a95e0bb992b555a76ebb8fd09c126aede --- dali-csharp-binder/src/application-wrap.cpp | 42 ++++++++++++++++++++++++++++- 1 file changed, 41 insertions(+), 1 deletion(-) diff --git a/dali-csharp-binder/src/application-wrap.cpp b/dali-csharp-binder/src/application-wrap.cpp index 2543f72..d8ea941 100644 --- a/dali-csharp-binder/src/application-wrap.cpp +++ b/dali-csharp-binder/src/application-wrap.cpp @@ -49,6 +49,42 @@ void ReleaseArgVMemory() } gArgC = 0; } + +void GenerationArgV(int argc, char* argv) +{ + // TODO : What should we do if already generated argv exist? + ReleaseArgVMemory(); + // generate argv data from the C# args + int index = 0; + int length = 0; + char* retPtr = NULL; + char* nextPtr; + + gArgV = new char*[argc + 1]; + + for(retPtr = strtok_r(argv, " ", &nextPtr); + retPtr != NULL && index < argc; + retPtr = strtok_r(NULL, " ", &nextPtr)) + { + length = 0; + length = strlen(retPtr); + gArgV[index] = new char[length + 1]; + strncpy(gArgV[index], retPtr, length); + gArgV[index][length] = '\0'; + index++; + } + + while(index < argc) + { + //if jarg1 - index >1, maybe cause error. + gArgV[index] = NULL; + index++; + } + + gArgV[argc] = NULL; + gArgC = argc; +} + } // unnamed namespace SWIGINTERN bool Dali_Signal_Sl_void_Sp_Dali_DeviceStatus_Battery_Status_SP__Sg__Empty(Dali::Signal const* self) @@ -1614,7 +1650,7 @@ SWIGEXPORT void* SWIGSTDCALL CSharp_Dali_Application_New__SWIG_5(int jarg1, char return jresult; } -SWIGEXPORT void* SWIGSTDCALL CSharp_Dali_Application_New__SWIG_6(int nuiArgc, char* nuiStyleSheet, int nuiWindowMode, void* nuiPositionSize, bool nuiUseUiThread) +SWIGEXPORT void* SWIGSTDCALL CSharp_Dali_Application_New__SWIG_6(int nuiArgc, char* nuiArgv, char* nuiStyleSheet, int nuiWindowMode, void* nuiPositionSize, bool nuiUseUiThread) { void* jresult; int* argc = nullptr; @@ -1641,6 +1677,10 @@ SWIGEXPORT void* SWIGSTDCALL CSharp_Dali_Application_New__SWIG_6(int nuiArgc, ch return 0; } + GenerationArgV(nuiArgc, nuiArgv); + argc = &gArgC; + argv = &gArgV; + positionSize = *positionSizeP; { try -- 2.7.4