d042a55a636054e352581248ba46b0a6d7036288
[platform/core/uifw/dali-demo.git] / shared / execute-process-android.cpp
1 /*
2  * Copyright (c) 2020 Samsung Electronics Co., Ltd.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  *
16  */
17
18  // FILE HEADER
19 #include "execute-process.h"
20
21  // EXTERNAL INCLUDES
22 #include <sstream>
23 #include <unistd.h>
24 #include <dali/public-api/common/dali-common.h>
25
26 void ExecuteProcess( const std::string& processName, Dali::Application& application )
27 {
28   std::stringstream stream;
29   stream << "am start -a android.intent.action.MAIN -n com.sec.dalidemo/.DaliDemoNativeActivity --user 0 --es start " << processName.c_str();
30   pid_t parentPID = getpid();
31
32   pid_t pid = fork();
33   if( pid == 0 )
34   {
35     do
36     {
37       sleep( 1 );
38     }
39     while( kill( parentPID, 0 ) == 0 );
40
41     system( stream.str().c_str() );
42     exit( 0 );
43   }
44   else
45   {
46     application.Quit();
47   }
48 }