+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();
+ }
+}
+
+
+