VCPKG - Solution added to build DALi demo with VCPKG 42/223042/4
authorVictor Cebollada <v.cebollada@samsung.com>
Wed, 22 Jan 2020 08:28:53 +0000 (08:28 +0000)
committerVictor Cebollada <v.cebollada@samsung.com>
Wed, 22 Jan 2020 15:31:33 +0000 (15:31 +0000)
* Code added to execute a process from Windows or Unix.

Change-Id: Ie28ecb8bb880dfa12f47f033ada3a8b8826e5787
Signed-off-by: Victor Cebollada <v.cebollada@samsung.com>
build/tizen/demo/CMakeLists.txt
build/tizen/examples-reel/CMakeLists.txt
build/tizen/tests-reel/CMakeLists.txt
shared/dali-table-view.cpp
shared/execute-process-unix.cpp [new file with mode: 0644]
shared/execute-process-win.cpp [new file with mode: 0644]
shared/execute-process.h [new file with mode: 0644]

index aae6103..4e73070 100644 (file)
@@ -6,6 +6,7 @@ SET(DEMO_SRCS
   ${DEMO_SRCS}
   "${ROOT_SRC_DIR}/shared/resources-location.cpp"
   "${ROOT_SRC_DIR}/shared/dali-table-view.cpp"
+  "${ROOT_SRC_DIR}/shared/execute-process-unix.cpp"
 )
 
 ADD_EXECUTABLE(${PROJECT_NAME} ${DEMO_SRCS})
index e12fa99..887ce5c 100644 (file)
@@ -6,6 +6,7 @@ SET(EXAMPLES_REEL_SRCS
   ${EXAMPLES_REEL_SRCS}
   "${ROOT_SRC_DIR}/shared/resources-location.cpp"
   "${ROOT_SRC_DIR}/shared/dali-table-view.cpp"
+  "${ROOT_SRC_DIR}/shared/execute-process-unix.cpp"
 )
 
 ADD_EXECUTABLE(dali-examples ${EXAMPLES_REEL_SRCS})
index b48714c..2eb4c53 100644 (file)
@@ -6,6 +6,7 @@ SET(TESTS_REEL_SRCS
   ${TESTS_REEL_SRCS}
   "${ROOT_SRC_DIR}/shared/resources-location.cpp"
   "${ROOT_SRC_DIR}/shared/dali-table-view.cpp"
+  "${ROOT_SRC_DIR}/shared/execute-process-unix.cpp"
 )
 
 ADD_EXECUTABLE(dali-tests ${TESTS_REEL_SRCS})
index aba375a..9be600d 100644 (file)
@@ -20,8 +20,6 @@
 
 // EXTERNAL INCLUDES
 #include <algorithm>
-#include <sstream>
-#include <unistd.h>
 #include <dali/devel-api/images/distance-field.h>
 #include <dali-toolkit/devel-api/shader-effects/alpha-discard-effect.h>
 #include <dali-toolkit/devel-api/shader-effects/distance-field-effect.h>
@@ -29,8 +27,9 @@
 #include <dali-toolkit/devel-api/visual-factory/visual-factory.h>
 
 // INTERNAL INCLUDES
-#include "shared/view.h"
+#include "shared/execute-process.h"
 #include "shared/utility.h"
+#include "shared/view.h"
 
 using namespace Dali;
 using namespace Dali::Toolkit;
@@ -621,14 +620,8 @@ void DaliTableView::OnPressedAnimationFinished( Dali::Animation& source )
   {
     std::string name = mPressedActor.GetName();
 
-    std::stringstream stream;
-    stream << DEMO_EXAMPLE_BIN << name.c_str();
-    pid_t pid = fork();
-    if( pid == 0)
-    {
-      execlp( stream.str().c_str(), name.c_str(), NULL );
-      DALI_ASSERT_ALWAYS(false && "exec failed!");
-    }
+    ExecuteProcess( name );
+
     mPressedActor.Reset();
   }
 }
diff --git a/shared/execute-process-unix.cpp b/shared/execute-process-unix.cpp
new file mode 100644 (file)
index 0000000..6b87e54
--- /dev/null
@@ -0,0 +1,36 @@
+/*
+ * Copyright (c) 2020 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+ // FILE HEADER
+#include "execute-process.h"
+
+ // EXTERNAL INCLUDES
+#include <sstream>
+#include <unistd.h>
+#include <dali/public-api/common/dali-common.h>
+
+void ExecuteProcess( const std::string& processName )
+{
+  std::stringstream stream;
+  stream << DEMO_EXAMPLE_BIN << processName.c_str();
+  pid_t pid = fork();
+  if( pid == 0)
+  {
+    execlp( stream.str().c_str(), processName.c_str(), NULL );
+    DALI_ASSERT_ALWAYS(false && "exec failed!");
+  }
+}
diff --git a/shared/execute-process-win.cpp b/shared/execute-process-win.cpp
new file mode 100644 (file)
index 0000000..3eb89f4
--- /dev/null
@@ -0,0 +1,52 @@
+/*
+ * Copyright (c) 2020 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+ // FILE HEADER
+#include "execute-process.h"
+
+ // EXTERNAL INCLUDES
+#include <windows.h>
+#include <dali/public-api/common/dali-common.h>
+
+namespace
+{
+const std::string PATH_SEPARATOR( "\\" );
+}
+
+void ExecuteProcess( const std::string& processName )
+{
+  char currentPath[MAX_PATH];
+  DWORD numberOfCharacters = GetCurrentDirectory( MAX_PATH, currentPath );
+
+  if( 0u == numberOfCharacters )
+  {
+    DALI_ASSERT_ALWAYS( !"Failed to retrieve the current working directory" );
+  }
+
+  currentPath[numberOfCharacters] = '\0';
+
+  const std::string processPathName = std::string( currentPath ) + PATH_SEPARATOR + DEMO_EXAMPLE_BIN + PATH_SEPARATOR + processName + ".exe";
+
+  STARTUPINFO info = { sizeof( info ) };
+  PROCESS_INFORMATION processInfo;
+  if( CreateProcess( processPathName.c_str(), nullptr, nullptr, nullptr, TRUE, 0, nullptr, nullptr, &info, &processInfo ) )
+  {
+    WaitForSingleObject( processInfo.hProcess, INFINITE );
+    CloseHandle( processInfo.hProcess );
+    CloseHandle( processInfo.hThread );
+  }
+}
diff --git a/shared/execute-process.h b/shared/execute-process.h
new file mode 100644 (file)
index 0000000..d31a4a1
--- /dev/null
@@ -0,0 +1,27 @@
+#ifndef DALI_DEMO_EXECUTE_PROCESS_H
+#define DALI_DEMO_EXECUTE_PROCESS_H
+
+/*
+ * Copyright (c) 2020 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+ // EXTERNAL INCLUDES
+#include <string>
+
+void ExecuteProcess( const std::string& processName );
+
+
+#endif // DALI_DEMO_EXECUTE_PROCESS_H