2 * Copyright 2012 Samsung Electronics Co., Ltd
4 * Licensed under the Flora License, Version 1.1 (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
8 * http://floralicense.org/license/
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.
20 #include <vconf-keys.h>
24 #include "lockd-debug.h"
25 #include "lockd-process-mgr.h"
26 #include "starter-vconf.h"
28 #define LOCKD_DEFAULT_PKG_NAME "org.tizen.lockscreen"
29 #define LOCKD_DEFAULT_LOCKSCREEN "org.tizen.lockscreen"
30 #define LOCKD_PHONE_LOCK_PKG_NAME "org.tizen.lockscreen"
31 #define RETRY_MAXCOUNT 30
32 #define RELAUNCH_INTERVAL 100*1000
34 static char *_lockd_process_mgr_get_pkgname(void)
38 pkgname = vconf_get_str(VCONFKEY_SETAPPL_3RD_LOCK_PKG_NAME_STR);
40 LOCKD_DBG("pkg name is %s", pkgname);
42 if (pkgname == NULL) {
43 return LOCKD_DEFAULT_PKG_NAME;
49 int lockd_process_mgr_restart_lock(int phone_lock_state)
51 char *lock_app_path = NULL;
54 lock_app_path = _lockd_process_mgr_get_pkgname();
55 pid = aul_launch_app(lock_app_path, NULL);
57 LOCKD_DBG("Reset : aul_launch_app(%s, NULL), pid = %d", lock_app_path,
63 int lockd_process_mgr_start_lock(void *data, int (*dead_cb) (int, void *),
66 char *lock_app_path = NULL;
70 lock_app_path = _lockd_process_mgr_get_pkgname();
73 for (i=0; i<RETRY_MAXCOUNT; i++)
75 pid = aul_launch_app(lock_app_path, NULL);
77 LOCKD_DBG("aul_launch_app(%s), pid = %d", lock_app_path, pid);
79 if (pid == AUL_R_ECOMM) {
80 LOCKD_DBG("Relaunch lock application [%d]times", i);
81 usleep(RELAUNCH_INTERVAL);
82 } else if (pid == AUL_R_ERROR) {
83 LOCKD_DBG("launch[%s] is failed, launch default lock screen", lock_app_path);
84 ret = vconf_set_str(VCONFKEY_SETAPPL_3RD_LOCK_PKG_NAME_STR, LOCKD_DEFAULT_LOCKSCREEN);
86 LOCKD_ERR("set failed");
88 pid = aul_launch_app(LOCKD_DEFAULT_LOCKSCREEN, NULL);
96 LOCKD_DBG("Relaunch lock application failed..!!");
100 int lockd_process_mgr_start_normal_lock(void *data, int (*dead_cb) (int, void *))
105 for (i=0; i<RETRY_MAXCOUNT; i++)
107 pid = aul_launch_app(LOCKD_DEFAULT_PKG_NAME, NULL);
109 LOCKD_DBG("aul_launch_app(%s), pid = %d", LOCKD_DEFAULT_PKG_NAME, pid);
111 if (pid == AUL_R_ECOMM) {
112 LOCKD_DBG("Relaunch lock application [%d]times", i);
113 usleep(RELAUNCH_INTERVAL);
114 } else if (pid == AUL_R_ERROR) {
115 LOCKD_DBG("launch[%s] is failed, launch default lock screen", LOCKD_DEFAULT_PKG_NAME);
116 pid = aul_launch_app(LOCKD_DEFAULT_LOCKSCREEN, NULL);
124 LOCKD_DBG("Relaunch lock application failed..!!");
128 int lockd_process_mgr_start_phone_lock(void)
132 pid = aul_launch_app(LOCKD_PHONE_LOCK_PKG_NAME, NULL);
133 LOCKD_DBG("aul_launch_app(%s, b), pid = %d", LOCKD_PHONE_LOCK_PKG_NAME,
138 void lockd_process_mgr_terminate_lock_app(int lock_app_pid, int state)
141 ("lockd_process_mgr_terminate_lock_app, state:%d\n",
145 if (lock_app_pid != 0) {
146 LOCKD_DBG("Terminate Lock app(pid : %d)", lock_app_pid);
147 aul_terminate_pid(lock_app_pid);
152 void lockd_process_mgr_terminate_phone_lock(int phone_lock_pid)
154 LOCKD_DBG("Terminate Phone Lock(pid : %d)", phone_lock_pid);
155 aul_terminate_pid(phone_lock_pid);
158 int lockd_process_mgr_check_lock(int pid)
161 LOCKD_DBG("%s, %d", __func__, __LINE__);
163 if (aul_app_get_pkgname_bypid(pid, buf, sizeof(buf)) < 0) {
164 LOCKD_DBG("no such pkg by pid %d\n", pid);
166 LOCKD_DBG("app pkgname = %s, pid = %d\n", buf, pid);
167 if (aul_app_is_running(buf) == TRUE) {
168 LOCKD_DBG("%s [pid = %d] is running\n", buf, pid);
171 LOCKD_DBG("[pid = %d] is exist but %s is not running\n",