tts
capi-message-port
efl-extension
+ liblazymount
+ libsystemd-daemon
)
ELSEIF("${TIZEN_PROFILE_NAME}" STREQUAL "WEARABLE")
edbus
dbus-1
dbus-glib-1
+ liblazymount
+ libsystemd-daemon
)
ENDIF()
#define MEMBER_LCD_ON "LCDOn"
#define MEMBER_LCD_OFF "LCDOff"
+#define SYS_LOCK_BUS_NAME "org.tizen.syslock"
+#define SYS_LOCK_OBJECT_PATH "/Org/Tizen/System/Syslock"
+#define SYS_LOCK_INTERFACE_UNLOCK SYS_LOCK_BUS_NAME".unlock"
+#define SYS_LOCK_INTERFACE_TERMINATE SYS_LOCK_BUS_NAME".terminate"
+#define SYS_LOCK_MEMBER_UNLOCK "unlock"
+#define SYS_LOCK_MEMBER_TERMINATE "terminate"
+
extern int dbus_util_send_oomadj(int pid, int oom_adj_value);
extern void dbus_util_send_cpu_booster_signal(void);
extern void dbus_util_send_poweroff_signal(void);
extern void dbus_util_send_lock_PmQos_signal(void);
+extern void dbus_util_send_sys_lock_teminate_signal(void);
extern int dbus_util_receive_lcd_status(void (*changed_cb)(void *data, DBusMessage *msg), void *data);
+extern int dbus_util_receive_sys_lock_status(void (*changed_cb)(void *data, DBusMessage *msg), void *data);
extern char *dbus_util_msg_arg_get_str(DBusMessage *msg);
#endif //__DBUS_UTIL_H__
+++ /dev/null
-[Unit]
-Description=Start the "starter" program
-
-[Path]
-PathExists=/run/.wm_ready
[Unit]
Description=Start the "starter" program
-After=ac.service
+DefaultDependencies=no
+After=ac.service efl-config.service enlightenment-user.service
[Service]
EnvironmentFile=/run/tizen-system-env
Restart=always
RestartSec=0
KillSignal=SIGKILL
-
-[Install]
-WantedBy=tizen-system.target
+Type=notify
License: Apache-2.0
Source0: %{name}-%{version}.tar.gz
Source1: %{name}.service
-Source2: %{name}.path
%if "%{profile}" == "tv" || "%{profile}" == "ivi"
ExcludeArch: %{arm} %ix86 x86_64
BuildRequires: pkgconfig(capi-system-media-key)
BuildRequires: pkgconfig(capi-network-bluetooth)
BuildRequires: pkgconfig(capi-system-system-settings)
+BuildRequires: pkgconfig(liblazymount)
+BuildRequires: pkgconfig(libsystemd-daemon)
%if "%{profile}" == "common"
BuildRequires: tts
rm -rf %{buildroot}
%make_install
-mkdir -p %{buildroot}%{__usrdir}/default.target.wants
+mkdir -p %{buildroot}%{__usrdir}/basic.target.wants
mkdir -p %{buildroot}%{_sysconfdir}/systemd/default-extra-dependencies/ignore-units.d/
install -m 0644 %SOURCE1 %{buildroot}%{__usrdir}/starter.service
-
-install -m 0644 %SOURCE2 %{buildroot}%{__usrdir}/starter.path
-ln -s ../starter.path %{buildroot}%{__usrdir}/default.target.wants/starter.path
+ln -s ../starter.service %{buildroot}%{__usrdir}/basic.target.wants/starter.service
mkdir -p %{buildroot}/usr/share/license
cp -f LICENSE %{buildroot}/usr/share/license/%{name}
%defattr(-,root,root,-)
%{_bindir}/starter
%{__usrdir}/starter.service
-%{__usrdir}/starter.path
-%{__usrdir}/default.target.wants/starter.path
+%{__usrdir}/basic.target.wants/starter.service
/usr/share/license/%{name}
#include "dbus_util.h"
#include "util.h"
-#define DBUS_HOME_BUS_NAME "org.tizen.coreapps.home"
-#define DBUS_HOME_RAISE_PATH "/Org/Tizen/Coreapps/home/raise"
-#define DBUS_HOME_RAISE_INTERFACE DBUS_HOME_BUS_NAME".raise"
-#define DBUS_HOME_RAISE_MEMBER "homeraise"
-
#define DBUS_REPLY_TIMEOUT (120 * 1000)
#define POWEROFF_BUS_NAME "org.tizen.system.popup"
+void dbus_util_send_sys_lock_teminate_signal(void)
+{
+ E_DBus_Connection *conn;
+ DBusMessage *msg;
+ int ret = 1;
+
+ conn = e_dbus_bus_get(DBUS_BUS_SYSTEM);
+ if (conn == NULL) {
+ _E("e_dbus_bus_get error");
+ }
+
+ msg = dbus_message_new_signal(SYS_LOCK_OBJECT_PATH,
+ SYS_LOCK_INTERFACE_TERMINATE,
+ SYS_LOCK_MEMBER_TERMINATE);
+
+ dbus_message_append_args(msg,
+ DBUS_TYPE_INT32, &ret,
+ DBUS_TYPE_INVALID);
+
+ e_dbus_message_send(conn, msg, NULL, -1, NULL);
+ dbus_message_unref(msg);
+
+ _D("%s-%s", SYS_LOCK_INTERFACE_TERMINATE, SYS_LOCK_MEMBER_TERMINATE);
+}
+
+
+
int dbus_util_receive_lcd_status(void (*changed_cb)(void *data, DBusMessage *msg), void *data)
{
E_DBus_Connection *conn;
E_DBus_Signal_Handler *handler;
- e_dbus_init();
-
conn = e_dbus_bus_get(DBUS_BUS_SYSTEM);
if (conn == NULL) {
_E("e_dbus_bus_get error");
return 1;
}
+
+
+int dbus_util_receive_sys_lock_status(void (*changed_cb)(void *data, DBusMessage *msg), void *data)
+{
+ E_DBus_Connection *conn;
+ E_DBus_Signal_Handler *handler;
+
+ conn = e_dbus_bus_get(DBUS_BUS_SYSTEM);
+ if (conn == NULL) {
+ _E("e_dbus_bus_get error");
+ return -1;
+ }
+
+ handler = e_dbus_signal_handler_add(conn, NULL, SYS_LOCK_OBJECT_PATH,
+ SYS_LOCK_INTERFACE_UNLOCK, SYS_LOCK_MEMBER_UNLOCK,
+ changed_cb, data);
+ if (handler == NULL) {
+ _E("e_dbus_signal_handler_add error");
+ return -1;
+ }
+
+ return 0;
+}
+
char *dbus_util_msg_arg_get_str(DBusMessage *msg)
{
int ret = 0;
return NULL;
}
-
-
-
#include <string.h>
#include <malloc.h>
+#include <E_DBus.h>
+#include <lazy_mount.h>
+#include <systemd/sd-daemon.h>
+
#include <aul.h>
#include <vconf.h>
#include <signal.h>
#include "util.h"
#include "status.h"
#include "hw_key.h"
+#include "dbus_util.h"
+#define APPID_SYS_LOCK "org.tizen.sys-lock"
#if 0
+static void _mount_and_launch_apps(void)
+{
+ int ret = 0;
+
+ /*
+ * Do mount user data partition
+ */
+ ret = do_mount_user();
+ if (ret != 0) {
+ _E("Failed to do mount [/opt] area");
+ return;
+ }
+
+ /*
+ * Wait user data partition mount
+ */
+ ret = wait_mount_user();
+ if (ret != 0) {
+ _E("Failed to wait mount [/opt] area");
+ return;
+ }
+
+ /* Tells the service manager that service startup is finished */
+ sd_notify(0, "READY=1");
+
+ /*
+ * After user data partition mount,
+ * launch lockscreen, homescreen, etc.
+ */
+ hw_key_create_window();
+
+ lock_mgr_init();
+ home_mgr_init(NULL);
+
+ _show_home();
+}
+
+
+
+static void _sys_lock_status_changed_cb(void *data, DBusMessage *msg)
+{
+ int is_unlock = 0;
+
+ is_unlock = dbus_message_is_signal(msg, SYS_LOCK_INTERFACE_UNLOCK, SYS_LOCK_MEMBER_UNLOCK);
+
+ _D("sys-lock signal is received. unlock state(%d).", is_unlock);
+
+ if (is_unlock) {
+ _mount_and_launch_apps();
+
+ /*
+ * Send DBus signal to terminate sys-lock
+ */
+ dbus_util_send_sys_lock_teminate_signal();
+ }
+}
+
+
+
static void _init(struct appdata *ad)
{
struct sigaction act;
- char err_buf[128] = {0,};
+ char err_buf[128] = { 0, };
+ int is_lazy_mount = 0;
+ int ret = 0;
memset(&act,0x00,sizeof(struct sigaction));
act.sa_sigaction = _signal_handler;
act.sa_flags = SA_SIGINFO;
- int ret = sigemptyset(&act.sa_mask);
+ ret = sigemptyset(&act.sa_mask);
if (ret < 0) {
if (strerror_r(errno, err_buf, sizeof(err_buf)) == 0) {
_E("Failed to sigemptyset[%d / %s]", errno, err_buf);
status_register();
status_active_register_cb(STATUS_ACTIVE_KEY_SYSMAN_POWER_OFF_STATUS, _power_off_cb, NULL);
- hw_key_create_window();
+ e_dbus_init();
- lock_mgr_init();
- home_mgr_init(NULL);
+ is_lazy_mount = get_need_ui_for_lazy_mount();
+ _D("Lazy mount : %d", is_lazy_mount);
+ if (is_lazy_mount) {
+ /*
+ * Launch Sys-lock
+ */
+ process_mgr_must_launch(APPID_SYS_LOCK, NULL, NULL, NULL, NULL);
- _show_home();
+ /*
+ * Register sys-lock status changed cb
+ */
+ dbus_util_receive_sys_lock_status(_sys_lock_status_changed_cb, NULL);
+ } else {
+ _mount_and_launch_apps();
+ }
aul_listen_app_dead_signal(_check_dead_signal, NULL);
}
home_mgr_fini();
lock_mgr_fini();
+ e_dbus_shutdown();
+
status_active_unregister_cb(STATUS_ACTIVE_KEY_SYSMAN_POWER_OFF_STATUS, _power_off_cb);
status_unregister();
#include <Ecore_Wayland.h>
#include <malloc.h>
+#include <lazy_mount.h>
+#include <systemd/sd-daemon.h>
+
#include "hw_key.h"
#include "util.h"
#include "hourly_alert.h"
{
struct sigaction act;
char err_buf[128] = {0,};
+ int ret = 0;
memset(&act,0x00,sizeof(struct sigaction));
act.sa_sigaction = _signal_handler;
act.sa_flags = SA_SIGINFO;
- int ret = sigemptyset(&act.sa_mask);
+ ret = sigemptyset(&act.sa_mask);
if (ret < 0) {
if (strerror_r(errno, err_buf, sizeof(err_buf)) == 0) {
_E("Failed to sigemptyset[%d / %s]", errno, err_buf);
status_active_register_cb(STATUS_ACTIVE_KEY_SYSMAN_POWER_OFF_STATUS, _power_off_cb, NULL);
status_active_register_cb(STATUS_ACTIVE_KEY_LANGSET, _change_language_cb, NULL);
+ /* Tells the service manager that service startup is finished */
+ sd_notify(0, "READY=1");
+
home_mgr_launch_home();
dbus_util_receive_lcd_status(_on_lcd_changed_receive, NULL);