* Code added to execute a process from Windows or Unix.
Change-Id: Ie28ecb8bb880dfa12f47f033ada3a8b8826e5787
Signed-off-by: Victor Cebollada <v.cebollada@samsung.com>
${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})
${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})
${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})
// 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>
#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;
{
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();
}
}
--- /dev/null
+/*
+ * 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!");
+ }
+}
--- /dev/null
+/*
+ * 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 );
+ }
+}
--- /dev/null
+#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