diff options
author | sung1103.park <sung1103.park@samsung.com> | 2012-08-21 19:54:21 +0900 |
---|---|---|
committer | sung1103.park <sung1103.park@samsung.com> | 2012-08-21 19:54:21 +0900 |
commit | e27a941b1d14f552f32ff4acd039d016aa4751ad (patch) | |
tree | b0b0311e953fc4f9fcb5a2a57ef14e9285e28495 /lock-mgr | |
parent | 7376a57ffc2c7c0ec155ae90cdb1db195d2bba4e (diff) | |
download | starter-e27a941b1d14f552f32ff4acd039d016aa4751ad.tar.gz starter-e27a941b1d14f552f32ff4acd039d016aa4751ad.tar.bz2 starter-e27a941b1d14f552f32ff4acd039d016aa4751ad.zip |
tizen_2.0_build
Diffstat (limited to 'lock-mgr')
-rwxr-xr-x | lock-mgr/CMakeLists.txt | 3 | ||||
-rwxr-xr-x | lock-mgr/include/lock-daemon.h | 11 | ||||
-rwxr-xr-x | lock-mgr/include/lockd-debug.h | 11 | ||||
-rwxr-xr-x | lock-mgr/include/lockd-process-mgr.h | 20 | ||||
-rwxr-xr-x | lock-mgr/include/lockd-window-mgr.h | 22 | ||||
-rwxr-xr-x | lock-mgr/src/lock-daemon.c | 408 | ||||
-rwxr-xr-x | lock-mgr/src/lockd-debug.c | 11 | ||||
-rwxr-xr-x | lock-mgr/src/lockd-process-mgr.c | 69 | ||||
-rwxr-xr-x | lock-mgr/src/lockd-window-mgr.c | 33 |
9 files changed, 99 insertions, 489 deletions
diff --git a/lock-mgr/CMakeLists.txt b/lock-mgr/CMakeLists.txt index 3a8c9d3..197ad11 100755 --- a/lock-mgr/CMakeLists.txt +++ b/lock-mgr/CMakeLists.txt @@ -25,11 +25,13 @@ pkg_check_modules(pkgs_lock_daemon REQUIRED ecore-input glib-2.0 bundle + capi-appfw-application ) FOREACH (flag ${pkgs_lock_daemon_CFLAGS}) SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}") ENDFOREACH(flag) +ADD_DEFINITIONS("-D_GNU_SOURCE") ADD_DEFINITIONS(${EXTRA_CFLAGS}) ADD_LIBRARY(${PROJECT_NAME} SHARED src/lock-daemon.c @@ -38,6 +40,7 @@ ADD_LIBRARY(${PROJECT_NAME} SHARED src/lockd-window-mgr.c ) INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/include) +INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include) TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${pkgs_lock_daemon_LDFLAGS}) INSTALL(TARGETS ${PROJECT_NAME} DESTINATION lib) diff --git a/lock-mgr/include/lock-daemon.h b/lock-mgr/include/lock-daemon.h index d4589ca..5fe3b93 100755 --- a/lock-mgr/include/lock-daemon.h +++ b/lock-mgr/include/lock-daemon.h @@ -1,22 +1,17 @@ /* - * starter + * Copyright 2012 Samsung Electronics Co., Ltd * - * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved. - * - * Contact: Seungtaek Chung <seungtaek.chung@samsung.com>, Mi-Ju Lee <miju52.lee@samsung.com>, Xi Zhichan <zhichan.xi@samsung.com> - * - * Licensed under the Apache License, Version 2.0 (the "License"); + * Licensed under the Flora License, Version 1.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 + * http://www.tizenopensource.org/license * * 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. - * */ #ifndef __LOCK_DAEMON_H__ diff --git a/lock-mgr/include/lockd-debug.h b/lock-mgr/include/lockd-debug.h index e22c86a..e017667 100755 --- a/lock-mgr/include/lockd-debug.h +++ b/lock-mgr/include/lockd-debug.h @@ -1,22 +1,17 @@ /* - * starter + * Copyright 2012 Samsung Electronics Co., Ltd * - * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved. - * - * Contact: Seungtaek Chung <seungtaek.chung@samsung.com>, Mi-Ju Lee <miju52.lee@samsung.com>, Xi Zhichan <zhichan.xi@samsung.com> - * - * Licensed under the Apache License, Version 2.0 (the "License"); + * Licensed under the Flora License, Version 1.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 + * http://www.tizenopensource.org/license * * 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. - * */ #ifndef __LOCKD_DEBUG_H__ diff --git a/lock-mgr/include/lockd-process-mgr.h b/lock-mgr/include/lockd-process-mgr.h index 13e34fc..e15d817 100755 --- a/lock-mgr/include/lockd-process-mgr.h +++ b/lock-mgr/include/lockd-process-mgr.h @@ -1,39 +1,29 @@ /* - * starter + * Copyright 2012 Samsung Electronics Co., Ltd * - * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved. - * - * Contact: Seungtaek Chung <seungtaek.chung@samsung.com>, Mi-Ju Lee <miju52.lee@samsung.com>, Xi Zhichan <zhichan.xi@samsung.com> - * - * Licensed under the Apache License, Version 2.0 (the "License"); + * Licensed under the Flora License, Version 1.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 + * http://www.tizenopensource.org/license * * 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. - * */ #ifndef __LOCKD_PROCESS_MGR_H__ #define __LOCKD_PROCESS_MGR_H__ -int lockd_process_mgr_start_lock(void *data, int (*dead_cb) (int, void *), - int phone_lock_state); +int lockd_process_mgr_start_lock(void *data, int (*dead_cb) (int, void *)); -int lockd_process_mgr_restart_lock(int phone_lock_state); - -int lockd_process_mgr_start_phone_lock(void); +int lockd_process_mgr_restart_lock(void); void lockd_process_mgr_terminate_lock_app(int lock_app_pid, int state); -void lockd_process_mgr_terminate_phone_lock(int phone_lock_pid); - int lockd_process_mgr_check_lock(int pid); #endif /* __LOCKD_PROCESS_MGR_H__ */ diff --git a/lock-mgr/include/lockd-window-mgr.h b/lock-mgr/include/lockd-window-mgr.h index 763303e..5bf8a5b 100755 --- a/lock-mgr/include/lockd-window-mgr.h +++ b/lock-mgr/include/lockd-window-mgr.h @@ -1,22 +1,17 @@ /* - * starter + * Copyright 2012 Samsung Electronics Co., Ltd * - * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved. - * - * Contact: Seungtaek Chung <seungtaek.chung@samsung.com>, Mi-Ju Lee <miju52.lee@samsung.com>, Xi Zhichan <zhichan.xi@samsung.com> - * - * Licensed under the Apache License, Version 2.0 (the "License"); + * Licensed under the Flora License, Version 1.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 + * http://www.tizenopensource.org/license * * 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. - * */ #ifndef __LOCKD_WINDOW_MGR_H__ @@ -24,15 +19,16 @@ typedef struct _lockw_data lockw_data; -void lockd_window_set_window_property(lockw_data * data, int lock_app_pid, +void +lockd_window_set_window_property(lockw_data * data, int lock_app_pid, void *event); -void lockd_window_set_window_effect(lockw_data * data, int lock_app_pid, +void +lockd_window_set_window_effect(lockw_data * data, int lock_app_pid, void *event); -void lockd_window_set_phonelock_pid(lockw_data * data, int phone_lock_pid); - -void lockd_window_mgr_ready_lock(void *data, lockw_data * lockw, +void +lockd_window_mgr_ready_lock(void *data, lockw_data * lockw, Eina_Bool(*create_cb) (void *, int, void *), Eina_Bool(*show_cb) (void *, int, void *)); diff --git a/lock-mgr/src/lock-daemon.c b/lock-mgr/src/lock-daemon.c index b45114f..7dba048 100755 --- a/lock-mgr/src/lock-daemon.c +++ b/lock-mgr/src/lock-daemon.c @@ -1,36 +1,28 @@ /* - * starter + * Copyright 2012 Samsung Electronics Co., Ltd * - * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved. - * - * Contact: Seungtaek Chung <seungtaek.chung@samsung.com>, Mi-Ju Lee <miju52.lee@samsung.com>, Xi Zhichan <zhichan.xi@samsung.com> - * - * Licensed under the Apache License, Version 2.0 (the "License"); + * Licensed under the Flora License, Version 1.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 + * http://www.tizenopensource.org/license * * 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. - * */ #include <Elementary.h> #include <vconf.h> #include <vconf-keys.h> -#include <glib.h> -#include <poll.h> #include <stdio.h> #include <stdlib.h> -#include <sys/socket.h> +#include <sys/un.h> #include <sys/types.h> #include <sys/stat.h> -#include <sys/un.h> #include <fcntl.h> #include <errno.h> #include <unistd.h> @@ -42,28 +34,16 @@ #include "lockd-process-mgr.h" #include "lockd-window-mgr.h" -static int phone_lock_pid; - struct lockd_data { int lock_app_pid; - int phone_lock_app_pid; - int phone_lock_state; lockw_data *lockw; }; -struct ucred { - pid_t pid; - uid_t uid; - gid_t gid; -}; - -#define VCONFKEY_PHONE_LOCK_VERIFICATION "memory/lockscreen/phone_lock_verification" -#define PHLOCK_SOCK_PREFIX "/tmp/phlock" -#define PHLOCK_SOCK_MAXBUFF 65535 -#define PHLOCK_APP_CMDLINE "/opt/apps/org.tizen.phone-lock/bin/phone-lock" #define LAUNCH_INTERVAL 100*1000 +static void lockd_launch_lockscreen(struct lockd_data *lockd); static void lockd_launch_app_lockscreen(struct lockd_data *lockd); + static void lockd_unlock_lockscreen(struct lockd_data *lockd); static void _lockd_notify_pm_state_cb(keynode_t * node, void *data) @@ -115,37 +95,13 @@ _lockd_notify_lock_state_cb(keynode_t * node, void *data) } } -static void -_lockd_notify_phone_lock_verification_cb(keynode_t * node, void *data) -{ - LOCKD_DBG("%s, %d", __func__, __LINE__); - - struct lockd_data *lockd = (struct lockd_data *)data; - int val = -1; - - if (lockd == NULL) { - LOCKD_ERR("lockd is NULL"); - return; - } - - if (vconf_get_bool(VCONFKEY_PHONE_LOCK_VERIFICATION, &val) < 0) { - LOCKD_ERR("Cannot get VCONFKEY_PHONE_LOCK_VERIFICATION"); - return; - } - - if (val == TRUE) { - lockd_window_mgr_finish_lock(lockd->lockw); - vconf_set_int(VCONFKEY_IDLE_LOCK_STATE, VCONFKEY_IDLE_UNLOCK); - } -} - static int lockd_app_dead_cb(int pid, void *data) { LOCKD_DBG("app dead cb call! (pid : %d)", pid); struct lockd_data *lockd = (struct lockd_data *)data; - if (pid == lockd->lock_app_pid && lockd->phone_lock_state == 0) { + if (pid == lockd->lock_app_pid ) { LOCKD_DBG("lock app(pid:%d) is destroyed.", pid); lockd_unlock_lockscreen(lockd); } @@ -185,21 +141,12 @@ static void lockd_launch_app_lockscreen(struct lockd_data *lockd) { LOCKD_DBG("launch app lock screen"); - int call_state = -1, bootlock_state = -1; + int call_state = -1, phlock_state = -1; int r = 0; - vconf_get_bool(VCONFKEY_SETAPPL_STATE_POWER_ON_LOCK_BOOL, - &bootlock_state); - - if (bootlock_state) { - lockd->phone_lock_state = 1; - } else { - lockd->phone_lock_state = 0; - } - if (lockd_process_mgr_check_lock(lockd->lock_app_pid) == TRUE) { LOCKD_DBG("Lock Screen App is already running."); - r = lockd_process_mgr_restart_lock(lockd->phone_lock_state); + r = lockd_process_mgr_restart_lock(); if (r < 0) { LOCKD_DBG("Restarting Lock Screen App is fail [%d].", r); usleep(LAUNCH_INTERVAL); @@ -217,295 +164,59 @@ static void lockd_launch_app_lockscreen(struct lockd_data *lockd) return; } - if (lockd->phone_lock_state == 1) { - vconf_set_bool(VCONFKEY_PHONE_LOCK_VERIFICATION, FALSE); - if (lockd_process_mgr_check_lock(lockd->phone_lock_app_pid) == TRUE) { - LOCKD_DBG("phone lock App is already running."); - return; - } - vconf_set_int(VCONFKEY_IDLE_LOCK_STATE, VCONFKEY_IDLE_LOCK); - lockd->phone_lock_app_pid = - lockd_process_mgr_start_phone_lock(); - phone_lock_pid = lockd->phone_lock_app_pid; - LOCKD_DBG("%s, %d, phone_lock_pid = %d", __func__, __LINE__, - phone_lock_pid); - lockd_window_set_phonelock_pid(lockd->lockw, phone_lock_pid); - } else { - lockd->lock_app_pid = - lockd_process_mgr_start_lock(lockd, lockd_app_dead_cb, - lockd->phone_lock_state); - if (lockd->lock_app_pid < 0) - return; - vconf_set_int(VCONFKEY_IDLE_LOCK_STATE, VCONFKEY_IDLE_LOCK); - lockd_window_mgr_ready_lock(lockd, lockd->lockw, lockd_app_create_cb, - lockd_app_show_cb); - } -} - -static void lockd_unlock_lockscreen(struct lockd_data *lockd) -{ - LOCKD_DBG("unlock lock screen"); - lockd->lock_app_pid = 0; - - lockd_window_mgr_finish_lock(lockd->lockw); - - vconf_set_int(VCONFKEY_IDLE_LOCK_STATE, VCONFKEY_IDLE_UNLOCK); -} - -inline static void lockd_set_sock_option(int fd, int cli) -{ - int size; - struct timeval tv = { 1, 200 * 1000 }; - - size = PHLOCK_SOCK_MAXBUFF; - setsockopt(fd, SOL_SOCKET, SO_SNDBUF, &size, sizeof(size)); - setsockopt(fd, SOL_SOCKET, SO_RCVBUF, &size, sizeof(size)); - if (cli) - setsockopt(fd, SOL_SOCKET, SO_RCVTIMEO, &tv, sizeof(tv)); -} - -static int lockd_create_sock(void) -{ - struct sockaddr_un saddr; - int fd; - - fd = socket(AF_UNIX, SOCK_STREAM, 0); - if (fd < 0) { - if (errno == EINVAL) { - fd = socket(AF_UNIX, SOCK_STREAM, 0); - if (fd < 0) { - LOCKD_DBG - ("second chance - socket create error"); - return -1; - } - } else { - LOCKD_DBG("socket error"); - return -1; - } - } - - bzero(&saddr, sizeof(saddr)); - saddr.sun_family = AF_UNIX; - - strncpy(saddr.sun_path, PHLOCK_SOCK_PREFIX, strlen(PHLOCK_SOCK_PREFIX)); - saddr.sun_path[strlen(PHLOCK_SOCK_PREFIX)] = 0; - - unlink(saddr.sun_path); - - if (bind(fd, (struct sockaddr *)&saddr, sizeof(saddr)) < 0) { - LOCKD_DBG("bind error"); - return -1; - } - - if (chmod(saddr.sun_path, (S_IRWXU | S_IRWXG | S_IRWXO)) < 0) { - LOCKD_DBG("failed to change the socket permission"); - return -1; - } - - lockd_set_sock_option(fd, 0); - - if (listen(fd, 10) == -1) { - LOCKD_DBG("listen error"); - return -1; - } - - return fd; -} + lockd->lock_app_pid = + lockd_process_mgr_start_lock(lockd, lockd_app_dead_cb); + if (lockd->lock_app_pid < 0) + return; -static gboolean lockd_glib_check(GSource * src) -{ - GSList *fd_list; - GPollFD *tmp; - - fd_list = src->poll_fds; - do { - tmp = (GPollFD *) fd_list->data; - if ((tmp->revents & (POLLIN | POLLPRI))) - return TRUE; - fd_list = fd_list->next; - } while (fd_list); - - return FALSE; + vconf_set_int(VCONFKEY_IDLE_LOCK_STATE, VCONFKEY_IDLE_LOCK); + lockd_window_mgr_ready_lock(lockd, lockd->lockw, lockd_app_create_cb, + lockd_app_show_cb); } -static char *lockd_read_cmdline_from_proc(int pid) +static void lockd_launch_lockscreen(struct lockd_data *lockd) { - int memsize = 32; - char path[32]; - char *cmdline = NULL, *tempptr = NULL; - FILE *fp = NULL; + LOCKD_DBG("launch lock screen"); - snprintf(path, sizeof(path), "/proc/%d/cmdline", pid); - - fp = fopen(path, "r"); - if (fp == NULL) { - LOCKD_DBG("Cannot open cmdline on pid[%d]", pid); - return NULL; - } - - cmdline = malloc(32); - if (cmdline == NULL) { - LOCKD_DBG("%s", "Out of memory"); - fclose(fp); - return NULL; - } - - bzero(cmdline, memsize); - if (fgets(cmdline, 32, fp) == NULL) { - LOCKD_DBG("%s", "Cannot read cmdline"); - free(cmdline); - fclose(fp); - return NULL; - } + int call_state = -1; + int r = 0; - while (cmdline[memsize - 2] != 0) { - cmdline[memsize - 1] = (char)fgetc(fp); - tempptr = realloc(cmdline, memsize + 32); - if (tempptr == NULL) { - fclose(fp); - LOCKD_DBG("%s", "Out of memory"); - return NULL; + if (lockd_process_mgr_check_lock(lockd->lock_app_pid) == TRUE) { + LOCKD_DBG("Lock Screen App is already running."); + r = lockd_process_mgr_restart_lock(); + if (r < 0) { + LOCKD_DBG("Restarting Lock Screen App is fail [%d].", r); + } else { + LOCKD_DBG("Restarting Lock Screen App, pid[%d].", r); + return; } - cmdline = tempptr; - bzero(cmdline + memsize, 32); - fgets(cmdline + memsize, 32, fp); - memsize += 32; - } - - if (fp != NULL) - fclose(fp); - return cmdline; -} - -static int lockd_sock_handler(int fd) -{ - int cl; - int len; - int sun_size; - int clifd = -1; - char cmd[PHLOCK_SOCK_MAXBUFF]; - char *cmdline = NULL; - - struct ucred cr; - struct sockaddr_un lockd_addr; - - cl = sizeof(cr); - sun_size = sizeof(struct sockaddr_un); - - if ((clifd = - accept(fd, (struct sockaddr *)&lockd_addr, - (socklen_t *) & sun_size)) == -1) { - if (errno != EINTR) - LOCKD_DBG("accept error"); - return -1; } - if (getsockopt(clifd, SOL_SOCKET, SO_PEERCRED, &cr, (socklen_t *) & cl) - < 0) { - LOCKD_DBG("peer information error"); - close(clifd); - return -1; - } - LOCKD_DBG("Peer's pid=%d, uid=%d, gid=%d\n", cr.pid, cr.uid, cr.gid); - - memset(cmd, 0, PHLOCK_SOCK_MAXBUFF); - - lockd_set_sock_option(clifd, 1); - - len = recv(clifd, cmd, PHLOCK_SOCK_MAXBUFF, 0); - - if (cmd == NULL) { - LOCKD_DBG("recv error, cmd is NULL"); - close(clifd); - return -1; - } - - if (len != strlen(cmd)) { - LOCKD_DBG("recv error %d %d", len, strlen(cmd)); - close(clifd); - return -1; - } - - LOCKD_DBG("cmd %s", cmd); - - cmdline = lockd_read_cmdline_from_proc(cr.pid); - if (cmdline == NULL) { - LOCKD_DBG("Error on opening /proc/%d/cmdline", cr.pid); - return -1; - } - - LOCKD_DBG("/proc/%d/cmdline : %s", cr.pid, cmdline); - - if ((!strncmp(cmdline, PHLOCK_APP_CMDLINE, strlen(cmdline))) - && (phone_lock_pid == cr.pid)) { - LOCKD_DBG("pid [%d] %s is verified, unlock..!!\n", cr.pid, - cmdline); - lockd_process_mgr_terminate_phone_lock(phone_lock_pid); - phone_lock_pid = 0; - vconf_set_bool(VCONFKEY_PHONE_LOCK_VERIFICATION, TRUE); + vconf_get_int(VCONFKEY_CALL_STATE, &call_state); + if (call_state != VCONFKEY_CALL_OFF) { + LOCKD_DBG + ("Current call state(%d) does not allow to launch lock screen.", + call_state); + return; } - return 0; -} + lockd_window_mgr_ready_lock(lockd, lockd->lockw, lockd_app_create_cb, + lockd_app_show_cb); -static gboolean lockd_glib_handler(gpointer data) -{ - GPollFD *gpollfd = (GPollFD *) data; - if (lockd_sock_handler(gpollfd->fd) < 0) { - LOCKD_DBG("lockd_sock_handler is failed..!!"); - } - return TRUE; -} + lockd->lock_app_pid = + lockd_process_mgr_start_lock(lockd, lockd_app_dead_cb); -static gboolean lockd_glib_dispatch(GSource * src, GSourceFunc callback, - gpointer data) -{ - callback(data); - return TRUE; + vconf_set_int(VCONFKEY_IDLE_LOCK_STATE, VCONFKEY_IDLE_LOCK); } -static gboolean lockd_glib_prepare(GSource * src, gint * timeout) -{ - return FALSE; -} - -static GSourceFuncs funcs = { - .prepare = lockd_glib_prepare, - .check = lockd_glib_check, - .dispatch = lockd_glib_dispatch, - .finalize = NULL -}; - -static int lockd_init_sock(void) +static void lockd_unlock_lockscreen(struct lockd_data *lockd) { - int fd; - GPollFD *gpollfd; - GSource *src; - int ret; - - fd = lockd_create_sock(); - if (fd < 0) { - LOCKD_DBG("lock daemon create sock failed..!!"); - } - - src = g_source_new(&funcs, sizeof(GSource)); - - gpollfd = (GPollFD *) g_malloc(sizeof(GPollFD)); - gpollfd->events = POLLIN; - gpollfd->fd = fd; - - g_source_add_poll(src, gpollfd); - g_source_set_callback(src, (GSourceFunc) lockd_glib_handler, - (gpointer) gpollfd, NULL); - g_source_set_priority(src, G_PRIORITY_LOW); - - ret = g_source_attach(src, NULL); - if (ret == 0) - return -1; + LOCKD_DBG("unlock lock screen"); + lockd->lock_app_pid = 0; - g_source_unref(src); + lockd_window_mgr_finish_lock(lockd->lockw); - return 0; + vconf_set_int(VCONFKEY_IDLE_LOCK_STATE, VCONFKEY_IDLE_UNLOCK); } static void lockd_init_vconf(struct lockd_data *lockd) @@ -518,26 +229,6 @@ static void lockd_init_vconf(struct lockd_data *lockd) } if (vconf_notify_key_changed - (VCONFKEY_PHONE_LOCK_VERIFICATION, - _lockd_notify_phone_lock_verification_cb, lockd) != 0) { - if (vconf_get_bool(VCONFKEY_PHONE_LOCK_VERIFICATION, &val) < 0) { - LOCKD_ERR - ("Cannot get VCONFKEY_PHONE_LOCK_VERIFICATION"); - vconf_set_bool(VCONFKEY_PHONE_LOCK_VERIFICATION, 0); - if (vconf_notify_key_changed - (VCONFKEY_PHONE_LOCK_VERIFICATION, - _lockd_notify_phone_lock_verification_cb, - lockd) != 0) { - LOCKD_ERR - ("Fail vconf_notify_key_changed : VCONFKEY_PHONE_LOCK_VERIFICATION"); - } - } else { - LOCKD_ERR - ("Fail vconf_notify_key_changed : VCONFKEY_PHONE_LOCK_VERIFICATION"); - } - } - - if (vconf_notify_key_changed (VCONFKEY_IDLE_LOCK_STATE, _lockd_notify_lock_state_cb, lockd) != 0) { @@ -561,10 +252,6 @@ static void lockd_start_lock_daemon(void *data) lockd_init_vconf(lockd); - r = lockd_init_sock(); - if (r < 0) { - LOCKD_DBG("lockd init socket failed: %d", r); - } lockd->lockw = lockd_window_init(); LOCKD_DBG("%s, %d", __func__, __LINE__); @@ -581,12 +268,5 @@ int start_lock_daemon() memset(lockd, 0x0, sizeof(struct lockd_data)); lockd_start_lock_daemon(lockd); - vconf_get_bool(VCONFKEY_SETAPPL_STATE_POWER_ON_LOCK_BOOL, &val); - LOCKD_DBG("%s, %d, val = %d", __func__, __LINE__, val); - - if (val) { - lockd_launch_app_lockscreen(lockd); - } - return 0; } diff --git a/lock-mgr/src/lockd-debug.c b/lock-mgr/src/lockd-debug.c index ea43831..bff5949 100755 --- a/lock-mgr/src/lockd-debug.c +++ b/lock-mgr/src/lockd-debug.c @@ -1,22 +1,17 @@ /* - * starter + * Copyright 2012 Samsung Electronics Co., Ltd * - * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved. - * - * Contact: Seungtaek Chung <seungtaek.chung@samsung.com>, Mi-Ju Lee <miju52.lee@samsung.com>, Xi Zhichan <zhichan.xi@samsung.com> - * - * Licensed under the Apache License, Version 2.0 (the "License"); + * Licensed under the Flora License, Version 1.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 + * http://www.tizenopensource.org/license * * 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. - * */ #include <stdio.h> diff --git a/lock-mgr/src/lockd-process-mgr.c b/lock-mgr/src/lockd-process-mgr.c index f227d72..179fced 100755 --- a/lock-mgr/src/lockd-process-mgr.c +++ b/lock-mgr/src/lockd-process-mgr.c @@ -1,22 +1,17 @@ /* - * starter + * Copyright 2012 Samsung Electronics Co., Ltd * - * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved. - * - * Contact: Seungtaek Chung <seungtaek.chung@samsung.com>, Mi-Ju Lee <miju52.lee@samsung.com>, Xi Zhichan <zhichan.xi@samsung.com> - * - * Licensed under the Apache License, Version 2.0 (the "License"); + * Licensed under the Flora License, Version 1.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 + * http://www.tizenopensource.org/license * * 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. - * */ #include <vconf.h> @@ -26,10 +21,10 @@ #include "lockd-debug.h" #include "lockd-process-mgr.h" +#include "starter-vconf.h" -#define VCONFKEY_LOCKP_PKG_NAME "db/lockscreen/pkgname" #define LOCKD_DEFAULT_PKG_NAME "org.tizen.draglock" -#define LOCKD_PHONE_LOCK_PKG_NAME "org.tizen.phone-lock" +#define LOCKD_DEFAULT_LOCKSCREEN "org.tizen.draglock" #define RETRY_MAXCOUNT 30 #define RELAUNCH_INTERVAL 100*1000 @@ -37,7 +32,7 @@ static char *_lockd_process_mgr_get_pkgname(void) { char *pkgname = NULL; - pkgname = vconf_get_str(VCONFKEY_LOCKP_PKG_NAME); + pkgname = vconf_get_str(VCONF_PRIVATE_LOCKSCREEN_PKGNAME); LOCKD_DBG("pkg name is %s", pkgname); @@ -48,7 +43,7 @@ static char *_lockd_process_mgr_get_pkgname(void) return pkgname; } -int lockd_process_mgr_restart_lock(int phone_lock_state) +int lockd_process_mgr_restart_lock(void) { char *lock_app_path = NULL; int pid; @@ -58,10 +53,7 @@ int lockd_process_mgr_restart_lock(int phone_lock_state) b = bundle_create(); - if (phone_lock_state) - bundle_add(b, "mode", "lock"); - else - bundle_add(b, "mode", "normal"); + bundle_add(b, "mode", "normal"); pid = aul_launch_app(lock_app_path, b); @@ -75,8 +67,7 @@ int lockd_process_mgr_restart_lock(int phone_lock_state) } int -lockd_process_mgr_start_lock(void *data, int (*dead_cb) (int, void *), - int phone_lock_state) +lockd_process_mgr_start_lock(void *data, int (*dead_cb) (int, void *)) { char *lock_app_path = NULL; int pid; @@ -86,10 +77,7 @@ lockd_process_mgr_start_lock(void *data, int (*dead_cb) (int, void *), b = bundle_create(); - if (phone_lock_state) - bundle_add(b, "mode", "lock"); - else - bundle_add(b, "mode", "normal"); + bundle_add(b, "mode", "normal"); int i; for (i=0; i<RETRY_MAXCOUNT; i++) @@ -101,6 +89,15 @@ lockd_process_mgr_start_lock(void *data, int (*dead_cb) (int, void *), if (pid == AUL_R_ECOMM) { LOCKD_DBG("Relaunch lock application [%d]times", i); usleep(RELAUNCH_INTERVAL); + } else if (pid == AUL_R_ERROR) { + LOCKD_DBG("launch[%s] is failed, launch default lock screen", lock_app_path); + pid = aul_launch_app(LOCKD_DEFAULT_LOCKSCREEN, b); + if (pid >0) { + aul_listen_app_dead_signal(dead_cb, data); + if (b) + bundle_free(b); + return pid; + } } else { /* set listen and dead signal */ aul_listen_app_dead_signal(dead_cb, data); @@ -113,25 +110,6 @@ lockd_process_mgr_start_lock(void *data, int (*dead_cb) (int, void *), return pid; } -int lockd_process_mgr_start_phone_lock(void) -{ - int pid = 0; - bundle *b = NULL; - - b = bundle_create(); - - bundle_add(b, "pwlock_type", "running_lock"); - bundle_add(b, "window_type", "alpha"); - - pid = aul_launch_app(LOCKD_PHONE_LOCK_PKG_NAME, b); - LOCKD_DBG("aul_launch_app(%s, b), pid = %d", LOCKD_PHONE_LOCK_PKG_NAME, - pid); - if (b) - bundle_free(b); - - return pid; -} - void lockd_process_mgr_terminate_lock_app(int lock_app_pid, int state) { @@ -147,20 +125,15 @@ lockd_process_mgr_terminate_lock_app(int lock_app_pid, int state) } } -void lockd_process_mgr_terminate_phone_lock(int phone_lock_pid) -{ - LOCKD_DBG("Terminate Phone Lock(pid : %d)", phone_lock_pid); - aul_terminate_pid(phone_lock_pid); -} - int lockd_process_mgr_check_lock(int pid) { char buf[128]; LOCKD_DBG("%s, %d", __func__, __LINE__); + if (aul_app_get_pkgname_bypid(pid, buf, sizeof(buf)) < 0) { LOCKD_DBG("no such pkg by pid %d\n", pid); } else { - LOCKD_DBG("lock screen pkgname = %s, pid = %d\n", buf, pid); + LOCKD_DBG("app pkgname = %s, pid = %d\n", buf, pid); if (aul_app_is_running(buf) == TRUE) { LOCKD_DBG("%s [pid = %d] is running\n", buf, pid); return TRUE; diff --git a/lock-mgr/src/lockd-window-mgr.c b/lock-mgr/src/lockd-window-mgr.c index a34995c..cdf5e74 100755 --- a/lock-mgr/src/lockd-window-mgr.c +++ b/lock-mgr/src/lockd-window-mgr.c @@ -1,22 +1,17 @@ /* - * starter + * Copyright 2012 Samsung Electronics Co., Ltd * - * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved. - * - * Contact: Seungtaek Chung <seungtaek.chung@samsung.com>, Mi-Ju Lee <miju52.lee@samsung.com>, Xi Zhichan <zhichan.xi@samsung.com> - * - * Licensed under the Apache License, Version 2.0 (the "License"); + * Licensed under the Flora License, Version 1.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 + * http://www.tizenopensource.org/license * * 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. - * */ #include <Elementary.h> @@ -25,12 +20,12 @@ #include <vconf.h> #include <bundle.h> #include <appcore-efl.h> +#include <app.h> #include "lockd-debug.h" #include "lockd-window-mgr.h" #define PACKAGE "starter" -#define VCONFKEY_PHONE_LOCK_VERIFICATION "memory/lockscreen/phone_lock_verification" struct _lockw_data { Ecore_X_Window input_x_window; @@ -44,13 +39,12 @@ struct _lockw_data { Ecore_Event_Handler *h_wincreate; Ecore_Event_Handler *h_winshow; - int phone_lock_state; - int phone_lock_app_pid; }; static Eina_Bool _lockd_window_key_down_cb(void *data, int type, void *event) { LOCKD_DBG("Key Down CB."); + return ECORE_CALLBACK_PASS_ON; } @@ -87,6 +81,7 @@ _lockd_window_check_validate_rect(Ecore_X_Display * dpy, Ecore_X_Window window) } } } + return ret; } @@ -120,6 +115,7 @@ static Window get_user_created_window(Window win) XFree((void *)prop_ret); return xid; + } void @@ -196,19 +192,6 @@ lockd_window_set_window_effect(lockw_data * data, int lock_app_pid, void *event) } } -void lockd_window_set_phonelock_pid(lockw_data * data, int phone_lock_pid) -{ - lockw_data *lockw = (lockw_data *) data; - - if (!lockw) { - return; - } - LOCKD_DBG("%s, %d", __func__, __LINE__); - lockw->phone_lock_app_pid = phone_lock_pid; - LOCKD_DBG("%s, %d, lockw->phone_lock_app_pid = %d", __func__, __LINE__, - lockw->phone_lock_app_pid); -} - void lockd_window_mgr_ready_lock(void *data, lockw_data * lockw, Eina_Bool(*create_cb) (void *, int, void *), @@ -272,6 +255,7 @@ lockw_data *lockd_window_init(void) memset(lockw, 0x0, sizeof(lockw_data)); pid = getpid(); + input_x_window = ecore_x_window_input_new(0, 0, 0, 1, 1); ecore_x_icccm_title_set(input_x_window, "lock-daemon-input-window"); ecore_x_netwm_name_set(input_x_window, "lock-daemon-input-window"); @@ -284,4 +268,3 @@ lockw_data *lockd_window_init(void) return lockw; } - |