2 * Copyright 2012 Samsung Electronics Co., Ltd
4 * Licensed under the Flora License, Version 1.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
8 * http://www.tizenopensource.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.
18 #include <vconf-keys.h>
22 #include "lockd-debug.h"
23 #include "lockd-process-mgr.h"
24 #include "starter-vconf.h"
26 #define LOCKD_DEFAULT_PKG_NAME "org.tizen.draglock"
27 #define LOCKD_DEFAULT_LOCKSCREEN "org.tizen.draglock"
28 #define RETRY_MAXCOUNT 30
29 #define RELAUNCH_INTERVAL 100*1000
31 static char *_lockd_process_mgr_get_pkgname(void)
35 pkgname = vconf_get_str(VCONF_PRIVATE_LOCKSCREEN_PKGNAME);
37 LOCKD_DBG("pkg name is %s", pkgname);
39 if (pkgname == NULL) {
40 return LOCKD_DEFAULT_PKG_NAME;
46 int lockd_process_mgr_restart_lock(void)
48 char *lock_app_path = NULL;
52 lock_app_path = _lockd_process_mgr_get_pkgname();
56 bundle_add(b, "mode", "normal");
58 pid = aul_launch_app(lock_app_path, b);
60 LOCKD_DBG("Reset : aul_launch_app(%s, NULL), pid = %d", lock_app_path,
70 lockd_process_mgr_start_lock(void *data, int (*dead_cb) (int, void *))
72 char *lock_app_path = NULL;
76 lock_app_path = _lockd_process_mgr_get_pkgname();
80 bundle_add(b, "mode", "normal");
83 for (i=0; i<RETRY_MAXCOUNT; i++)
85 pid = aul_launch_app(lock_app_path, b);
87 LOCKD_DBG("aul_launch_app(%s, NULL), pid = %d", lock_app_path, pid);
89 if (pid == AUL_R_ECOMM) {
90 LOCKD_DBG("Relaunch lock application [%d]times", i);
91 usleep(RELAUNCH_INTERVAL);
92 } else if (pid == AUL_R_ERROR) {
93 LOCKD_DBG("launch[%s] is failed, launch default lock screen", lock_app_path);
94 pid = aul_launch_app(LOCKD_DEFAULT_LOCKSCREEN, b);
96 aul_listen_app_dead_signal(dead_cb, data);
102 /* set listen and dead signal */
103 aul_listen_app_dead_signal(dead_cb, data);
109 LOCKD_DBG("Relaunch lock application failed..!!");
114 lockd_process_mgr_terminate_lock_app(int lock_app_pid, int state)
117 ("lockd_process_mgr_terminate_lock_app, state:%d\n",
121 if (lock_app_pid != 0) {
122 LOCKD_DBG("Terminate Lock app(pid : %d)", lock_app_pid);
123 aul_terminate_pid(lock_app_pid);
128 int lockd_process_mgr_check_lock(int pid)
131 LOCKD_DBG("%s, %d", __func__, __LINE__);
133 if (aul_app_get_pkgname_bypid(pid, buf, sizeof(buf)) < 0) {
134 LOCKD_DBG("no such pkg by pid %d\n", pid);
136 LOCKD_DBG("app pkgname = %s, pid = %d\n", buf, pid);
137 if (aul_app_is_running(buf) == TRUE) {
138 LOCKD_DBG("%s [pid = %d] is running\n", buf, pid);
141 LOCKD_DBG("[pid = %d] is exist but %s is not running\n",