Fix the missing code to generation argv string in UI threading case. 54/294654/1
authorWonsik Jung <sidein@samsung.com>
Thu, 22 Jun 2023 08:01:41 +0000 (17:01 +0900)
committerWonsik Jung <sidein@samsung.com>
Thu, 22 Jun 2023 08:01:41 +0000 (17:01 +0900)
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

index 2543f72..d8ea941 100644 (file)
@@ -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<void(Dali::DeviceStatus::Battery::Status)> 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