summaryrefslogtreecommitdiff
path: root/lock-mgr
diff options
context:
space:
mode:
authorsung1103.park <sung1103.park@samsung.com>2012-08-21 19:54:21 +0900
committersung1103.park <sung1103.park@samsung.com>2012-08-21 19:54:21 +0900
commite27a941b1d14f552f32ff4acd039d016aa4751ad (patch)
treeb0b0311e953fc4f9fcb5a2a57ef14e9285e28495 /lock-mgr
parent7376a57ffc2c7c0ec155ae90cdb1db195d2bba4e (diff)
downloadstarter-e27a941b1d14f552f32ff4acd039d016aa4751ad.tar.gz
starter-e27a941b1d14f552f32ff4acd039d016aa4751ad.tar.bz2
starter-e27a941b1d14f552f32ff4acd039d016aa4751ad.zip
tizen_2.0_build
Diffstat (limited to 'lock-mgr')
-rwxr-xr-xlock-mgr/CMakeLists.txt3
-rwxr-xr-xlock-mgr/include/lock-daemon.h11
-rwxr-xr-xlock-mgr/include/lockd-debug.h11
-rwxr-xr-xlock-mgr/include/lockd-process-mgr.h20
-rwxr-xr-xlock-mgr/include/lockd-window-mgr.h22
-rwxr-xr-xlock-mgr/src/lock-daemon.c408
-rwxr-xr-xlock-mgr/src/lockd-debug.c11
-rwxr-xr-xlock-mgr/src/lockd-process-mgr.c69
-rwxr-xr-xlock-mgr/src/lockd-window-mgr.c33
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;
}
-