summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHwankyu Jhun <h.jhun@samsung.com>2018-05-14 12:54:06 +0900
committerHwankyu Jhun <h.jhun@samsung.com>2018-05-14 12:54:06 +0900
commit98c25260a55c0cfe75ed08064ba541a8d0bc3084 (patch)
treeb725da28353e4bba4e1d47a0ac6f0a8f0eb7b75a
parent31710d641f8f75a01da1e5d70f2ff6a2da90c1e2 (diff)
parent7239f24671a02591a4252bd7def523f4e923f1ee (diff)
downloadlaunchpad-98c25260a55c0cfe75ed08064ba541a8d0bc3084.tar.gz
launchpad-98c25260a55c0cfe75ed08064ba541a8d0bc3084.tar.bz2
launchpad-98c25260a55c0cfe75ed08064ba541a8d0bc3084.zip
Change-Id: I861f78e45b61dbb8e6d8f92ce1c224d47e6fa568 Signed-off-by: Hwankyu Jhun <h.jhun@samsung.com>
-rwxr-xr-xCMakeLists.txt1
-rw-r--r--packaging/default.loader.in8
-rw-r--r--packaging/launchpad.spec3
-rw-r--r--src/launchpad_loader.c79
4 files changed, 77 insertions, 14 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 1fbed8a..709a6e9 100755
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -33,7 +33,6 @@ PKG_CHECK_MODULES(${this_target_loader} REQUIRED
vconf
buxton2
libsystemd
- voice-control-elm
gio-2.0
)
diff --git a/packaging/default.loader.in b/packaging/default.loader.in
index 1abc0ea..c127b19 100644
--- a/packaging/default.loader.in
+++ b/packaging/default.loader.in
@@ -10,12 +10,12 @@ EXTRA_ARRAY preload
EXTRA_ARRAY_VAL @LIB_INSTALL_DIR@/libappcore-efl.so.1
EXTRA_ARRAY_VAL @LIB_INSTALL_DIR@/libappcore-common.so.1
EXTRA_ARRAY_VAL @LIB_INSTALL_DIR@/libcapi-appfw-application.so.0
-EXTRA_ARRAY_VAL @LIB_INSTALL_DIR@/ecore_imf/modules/wayland/v-1.16/libwltextinputmodule.so
+EXTRA_ARRAY_VAL @LIB_INSTALL_DIR@/ecore_imf/modules/wayland/v-1.20/libwltextinputmodule.so
EXTRA_ARRAY_VAL @LIB_INSTALL_DIR@/libdali-toolkit.so
EXTRA_ARRAY_VAL @LIB_INSTALL_DIR@/libcairo.so.2
EXTRA_ARRAY_VAL @LIB_INSTALL_DIR@/libcapi-media-player.so.0
EXTRA_ARRAY_VAL @LIB_INSTALL_DIR@/libcapi-media-camera.so.0
-EXTRA_ARRAY_VAL @LIB_INSTALL_DIR@/ecore_evas/engines/extn/v-1.16/module.so
+EXTRA_ARRAY_VAL @LIB_INSTALL_DIR@/ecore_evas/engines/extn/v-1.20/module.so
ALTERNATIVE_LOADER common-loader1
[LOADER]
@@ -29,8 +29,8 @@ EXTRA_ARRAY preload
EXTRA_ARRAY_VAL @LIB_INSTALL_DIR@/libappcore-efl.so.1
EXTRA_ARRAY_VAL @LIB_INSTALL_DIR@/libappcore-common.so.1
EXTRA_ARRAY_VAL @LIB_INSTALL_DIR@/libcapi-appfw-application.so.0
-EXTRA_ARRAY_VAL @LIB_INSTALL_DIR@/ecore_imf/modules/wayland/v-1.16/libwltextinputmodule.so
-EXTRA_ARRAY_VAL @LIB_INSTALL_DIR@/ecore_evas/engines/extn/v-1.16/module.so
+EXTRA_ARRAY_VAL @LIB_INSTALL_DIR@/ecore_imf/modules/wayland/v-1.20/libwltextinputmodule.so
+EXTRA_ARRAY_VAL @LIB_INSTALL_DIR@/ecore_evas/engines/extn/v-1.20/module.so
diff --git a/packaging/launchpad.spec b/packaging/launchpad.spec
index 9c591c8..f403dd5 100644
--- a/packaging/launchpad.spec
+++ b/packaging/launchpad.spec
@@ -1,6 +1,6 @@
Name: launchpad
Summary: Launchpad for launching applications
-Version: 0.5.2
+Version: 0.5.3
Release: 1
Group: Application Framework/Daemons
License: Apache-2.0
@@ -24,7 +24,6 @@ BuildRequires: pkgconfig(ttrace)
BuildRequires: pkgconfig(libtzplatform-config)
BuildRequires: pkgconfig(libcap)
BuildRequires: pkgconfig(tanchor)
-BuildRequires: pkgconfig(voice-control-elm)
Requires(post): /sbin/ldconfig
Requires(post): /usr/bin/systemctl
diff --git a/src/launchpad_loader.c b/src/launchpad_loader.c
index 8e75181..0bc44c9 100644
--- a/src/launchpad_loader.c
+++ b/src/launchpad_loader.c
@@ -26,8 +26,6 @@
#include <Elementary.h>
#include <bundle_internal.h>
#include <vconf.h>
-#include <voice_control_elm.h>
-#include <voice_control_elm_private.h>
#include "launchpad_common.h"
#include "launchpad.h"
@@ -38,6 +36,8 @@
#define LOADER_TYPE_HW "hw-loader"
#define LOADER_TYPE_SW "sw-loader"
+#define PATH_LIB_VC_ELM "/usr/lib/libvc-elm.so.0"
+
extern bundle *launchpad_loader_get_bundle(void);
static Ecore_Fd_Handler *__fd_handler;
@@ -50,7 +50,13 @@ static Evas_Object *__win;
static Evas_Object *__bg;
static Evas_Object *__conform;
static int __type;
+
static bool __vc_elm_initialized;
+static void *__vc_elm_handle;
+static int (*__vc_elm_initialize)(void);
+static int (*__vc_elm_deinitialize)(void);
+static int (*__vc_elm_set_auto_register_mode)(int, int);
+
enum loader_type {
TYPE_COMMON,
@@ -144,6 +150,60 @@ static void __fini_window(void)
}
}
+static void __unload_vc_elm(void)
+{
+ if (!__vc_elm_handle)
+ return;
+
+ __vc_elm_initialize = NULL;
+ __vc_elm_deinitialize = NULL;
+ __vc_elm_set_auto_register_mode = NULL;
+
+ dlclose(__vc_elm_handle);
+ __vc_elm_handle = NULL;
+}
+
+static int __load_vc_elm(void)
+{
+ if (__vc_elm_handle)
+ return 0;
+
+ if (access(PATH_LIB_VC_ELM, F_OK) != 0) {
+ _W("Failed to access %s", PATH_LIB_VC_ELM);
+ return -1;
+ }
+
+ __vc_elm_handle = dlopen(PATH_LIB_VC_ELM, RTLD_LAZY | RTLD_GLOBAL);
+ if (!__vc_elm_handle) {
+ _E("Failed to open %s", PATH_LIB_VC_ELM);
+ return -1;
+ }
+
+ __vc_elm_initialize = dlsym(__vc_elm_handle, "vc_elm_initialize");
+ if (!__vc_elm_initialize) {
+ _E("Failed to load vc_elm_initialize");
+ __unload_vc_elm();
+ return -1;
+ }
+
+ __vc_elm_deinitialize = dlsym(__vc_elm_handle, "vc_elm_deinitialize");
+ if (!__vc_elm_deinitialize) {
+ _E("Failed to load vc_elm_deinitialize");
+ __unload_vc_elm();
+ return -1;
+ }
+
+ __vc_elm_set_auto_register_mode = dlsym(__vc_elm_handle,
+ "vc_elm_set_auto_register_mode");
+ if (!__vc_elm_set_auto_register_mode) {
+ _E("Failed to load vc_elm_set_auto_register_mode");
+ __unload_vc_elm();
+ return -1;
+ }
+
+ return 0;
+}
+
static void __vc_vtauto_changed_cb(keynode_t *key, void *data)
{
const char *name;
@@ -156,12 +216,12 @@ static void __vc_vtauto_changed_cb(keynode_t *key, void *data)
vt_automode = vconf_keynode_get_bool(key);
if (vt_automode) {
if (!__vc_elm_initialized) {
- vc_elm_initialize();
+ __vc_elm_initialize();
__vc_elm_initialized = true;
}
- vc_elm_set_auto_register_mode(2, 0);
+ __vc_elm_set_auto_register_mode(2, 0);
} else {
- vc_elm_deinitialize();
+ __vc_elm_deinitialize();
__vc_elm_initialized = false;
}
}
@@ -169,16 +229,21 @@ static void __vc_vtauto_changed_cb(keynode_t *key, void *data)
static void __vc_elm_init(void)
{
int vt_automode = 0;
+ int r;
+
+ r = __load_vc_elm();
+ if (r < 0)
+ return;
vconf_notify_key_changed(VCONFKEY_VC_VOICE_TOUCH_AUTOMODE,
__vc_vtauto_changed_cb, NULL);
vconf_get_bool(VCONFKEY_VC_VOICE_TOUCH_AUTOMODE, &vt_automode);
if (vt_automode) {
if (!__vc_elm_initialized) {
- vc_elm_initialize();
+ __vc_elm_initialize();
__vc_elm_initialized = true;
}
- vc_elm_set_auto_register_mode(2, 0);
+ __vc_elm_set_auto_register_mode(2, 0);
}
setenv("VC_ELM_INIT", "1", 1);