From 9fe6ca199c9b1178f542d22e9e6432595987160e Mon Sep 17 00:00:00 2001 From: Sungho Kwak Date: Tue, 2 Jul 2013 15:58:38 +0900 Subject: [PATCH 01/16] package upload Change-Id: I082f52397514063a19b81262479dff35e37d8b8d --- packaging/efl-assist.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packaging/efl-assist.spec b/packaging/efl-assist.spec index 22493a8..4f3ee5a 100644 --- a/packaging/efl-assist.spec +++ b/packaging/efl-assist.spec @@ -1,6 +1,6 @@ Name: efl-assist Summary: EFL assist library -Version: 0.1.17 +Version: 0.1.17r01 Release: 1 Group: System/Libraries License: APLv2 -- 2.7.4 From 7f84a7205aed12a1b7380a3070fa3289b5bf8c2c Mon Sep 17 00:00:00 2001 From: ChunEon Park Date: Tue, 9 Jul 2013 14:02:45 +0900 Subject: [PATCH 02/16] events - fix the double free() case. don't free the data if the data is still being used. Change-Id: I9b4185a8ed6bf191ef3b6f3c046fdf0ab9f741fc --- src/lib/efl_assist_events.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/lib/efl_assist_events.c b/src/lib/efl_assist_events.c index fdf3359..cfb6592 100644 --- a/src/lib/efl_assist_events.c +++ b/src/lib/efl_assist_events.c @@ -58,7 +58,8 @@ _ea_object_del_cb(void *data, Evas *e, Evas_Object *obj, void *event_info) free(callback); obj_event->callbacks = eina_list_free(obj_event->callbacks); - free(obj_event); + if (obj_event->on_callback) obj_event->delete_me = EINA_TRUE; + else free(obj_event); _ea_event_mgr_del(event_mgr); } -- 2.7.4 From e1f7237b503193170e130c7b450dd4f8fc8d6f1d Mon Sep 17 00:00:00 2001 From: Jaehwan Kim Date: Tue, 9 Jul 2013 21:53:34 +0900 Subject: [PATCH 03/16] Package Upload Change-Id: Ic841b0c8df7d93dd2ef309b2f76e538d5f844fae --- packaging/efl-assist.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packaging/efl-assist.spec b/packaging/efl-assist.spec index 4f3ee5a..a1e1864 100644 --- a/packaging/efl-assist.spec +++ b/packaging/efl-assist.spec @@ -1,6 +1,6 @@ Name: efl-assist Summary: EFL assist library -Version: 0.1.17r01 +Version: 0.1.18r01 Release: 1 Group: System/Libraries License: APLv2 -- 2.7.4 From bb66989776041f381d397715c8d3e5a62f78f909 Mon Sep 17 00:00:00 2001 From: WooHyun Jung Date: Wed, 10 Jul 2013 11:26:25 +0900 Subject: [PATCH 04/16] Refactoring for removing desktop build environment, supporting menu button event, and making ea_init and ea_shutdown do nothing. Change-Id: I6f345f9ce9e2e3a2e695432f5398317a507d6da2 --- packaging/efl-assist.spec | 6 ++-- src/include/efl_assist_editfield.h | 3 -- src/include/efl_assist_private.h | 22 ++---------- src/lib/CMakeLists.txt | 28 ++++----------- src/lib/efl_assist.c | 48 +++----------------------- src/lib/efl_assist_events.c | 70 +++++++++++++++----------------------- 6 files changed, 45 insertions(+), 132 deletions(-) diff --git a/packaging/efl-assist.spec b/packaging/efl-assist.spec index a1e1864..d1b0d19 100644 --- a/packaging/efl-assist.spec +++ b/packaging/efl-assist.spec @@ -5,13 +5,13 @@ Release: 1 Group: System/Libraries License: APLv2 Source0: %{name}-%{version}.tar.gz +BuildRequires: cmake BuildRequires: pkgconfig(elementary) BuildRequires: pkgconfig(dlog) -BuildRequires: pkgconfig(capi-base-common) -BuildRequires: pkgconfig(capi-appfw-application) -BuildRequires: cmake BuildRequires: pkgconfig(vconf) BuildRequires: pkgconfig(tts) +BuildRequires: pkgconfig(capi-base-common) +BuildRequires: pkgconfig(capi-appfw-application) Requires(post): /sbin/ldconfig Requires(postun): /sbin/ldconfig diff --git a/src/include/efl_assist_editfield.h b/src/include/efl_assist_editfield.h index 2c96f60..c56b0bb 100644 --- a/src/include/efl_assist_editfield.h +++ b/src/include/efl_assist_editfield.h @@ -20,9 +20,6 @@ #include #include -#ifndef DESKTOP - #include -#endif #ifdef __cplusplus extern "C" { diff --git a/src/include/efl_assist_private.h b/src/include/efl_assist_private.h index 61995a4..7dbdb6e 100644 --- a/src/include/efl_assist_private.h +++ b/src/include/efl_assist_private.h @@ -23,6 +23,9 @@ #include #include #include +#include +#include +#include #ifdef __cplusplus extern "C" { @@ -51,25 +54,6 @@ typedef unsigned int ea_magic; void _ea_magic_fail(const void *d, ea_magic m, ea_magic req_m, const char *fname); -#define CRITICAL(...) EINA_LOG_DOM_CRIT(_ea.ea_log_dom, __VA_ARGS__) -#define ERR(...) EINA_LOG_DOM_ERR(_ea.ea_log_dom, __VA_ARGS__) -#define WRN(...) EINA_LOG_DOM_WARN(_ea.ea_log_dom, __VA_ARGS__) -#define INF(...) EINA_LOG_DOM_INFO(_ea.ea_log_dom, __VA_ARGS__) -#define DBG(...) EINA_LOG_DOM_DBG(_ea.ea_log_dom, __VA_ARGS__) - -typedef struct _Ea Ea; -typedef struct _Ea_Event_Mgr Ea_Event_Mgr; - -struct _Ea -{ - Eina_List *event_mgrs; - int ea_log_dom; -}; - -extern Ea _ea; - -void ea_event_mgr_clear(Ea_Event_Mgr *event_mgr); - #ifdef __cplusplus } #endif diff --git a/src/lib/CMakeLists.txt b/src/lib/CMakeLists.txt index e45b392..b647f6f 100644 --- a/src/lib/CMakeLists.txt +++ b/src/lib/CMakeLists.txt @@ -1,27 +1,13 @@ -option(DESKTOP "Build for i386 linux desktop" OFF) - -if (DESKTOP) - SET(LIB_SRCS - efl_assist.c - efl_assist_editfield.c - efl_assist_events.c) -else (DESKTOP) - SET(LIB_SRCS - efl_assist.c - efl_assist_editfield.c - efl_assist_events.c - efl_assist_screen_reader.c) -endif (DESKTOP) +SET(LIB_SRCS + efl_assist.c + efl_assist_editfield.c + efl_assist_events.c + efl_assist_screen_reader.c) ADD_LIBRARY(${LIB_NAME} SHARED ${LIB_SRCS}) -if (DESKTOP) - PKG_CHECK_MODULES(LIB_PKGS REQUIRED elementary) - ADD_DEFINITIONS("-DDESKTOP=1") - ADD_DEFINITIONS("-DEXPORT_API=__attribute__((visibility(\"default\")))") -else (DESKTOP) - PKG_CHECK_MODULES(LIB_PKGS REQUIRED elementary capi-base-common capi-appfw-application vconf tts) -endif (DESKTOP) +ADD_DEFINITIONS("-DEXPORT_API=__attribute__((visibility(\"default\")))") +PKG_CHECK_MODULES(LIB_PKGS REQUIRED elementary vconf tts capi-base-common capi-appfw-application dlog) FOREACH(flag ${LIB_PKGS_CFLAGS}) SET(LIB_CFLAGS "${LIB_CFLAGS} ${flag}") diff --git a/src/lib/efl_assist.c b/src/lib/efl_assist.c index b28a21d..0e3420f 100644 --- a/src/lib/efl_assist.c +++ b/src/lib/efl_assist.c @@ -22,40 +22,6 @@ * Local * *===========================================================================*/ -Ea _ea; - -static void -ea_init(void) -{ - memset(&_ea, 0x00, sizeof(_ea)); - - _ea.ea_log_dom = eina_log_domain_register("efl-assist", - EINA_COLOR_LIGHTBLUE); - if (!_ea.ea_log_dom) - { - EINA_LOG_ERR("could not register efl-assist log domain"); - _ea.ea_log_dom = EINA_LOG_DOMAIN_GLOBAL; - } -} - -static void -ea_shutdown(void) -{ - Eina_List *l; - Ea_Event_Mgr *event_mgr; - - //Remove Event Managers - EINA_LIST_FOREACH(_ea.event_mgrs, l, event_mgr) - ea_event_mgr_clear(event_mgr); - _ea.event_mgrs = eina_list_free(_ea.event_mgrs); - - if ((_ea.ea_log_dom > - 1) && (_ea.ea_log_dom != EINA_LOG_DOMAIN_GLOBAL)) - { - eina_log_domain_unregister(_ea.ea_log_dom); - _ea.ea_log_dom = -1; - } -} - static const char * _magic_string_get(ea_magic m) { @@ -74,17 +40,11 @@ _magic_string_get(ea_magic m) __CONSTRUCTOR__ static void ea_mod_init(void) { - ea_init(); - - DBG("loaded"); } __DESTRUCTOR__ static void ea_mod_shutdown(void) { - DBG("unloaded"); - - ea_shutdown(); } @@ -95,14 +55,14 @@ ea_mod_shutdown(void) void _ea_magic_fail(const void *d, ea_magic m, ea_magic req_m, const char *fname) { - ERR("\n*** MAGIC FAIL (%s) ***\n", fname); + LOGE("\n*** MAGIC FAIL (%s) ***\n", fname); if (!d) - ERR(" Input handle pointer is NULL!"); + LOGE(" Input handle pointer is NULL!"); else if (m == EA_MAGIC_NONE) - ERR(" Input handle has already been freed!"); + LOGE(" Input handle has already been freed!"); else if (m != req_m) - ERR(" Input handle is wrong type\n" + LOGE(" Input handle is wrong type\n" " Expected: %08x - %s\n" " Supplied: %08x - %s", (unsigned int)req_m, _magic_string_get(req_m), diff --git a/src/lib/efl_assist_events.c b/src/lib/efl_assist_events.c index cfb6592..85f205b 100644 --- a/src/lib/efl_assist_events.c +++ b/src/lib/efl_assist_events.c @@ -1,6 +1,8 @@ #include "efl_assist.h" #include "efl_assist_private.h" +typedef struct _Ea_Event_Mgr Ea_Event_Mgr; + struct _Ea_Event_Mgr { Eina_List *obj_events; @@ -26,9 +28,13 @@ typedef struct _Ea_Event_Callback const char *EA_OBJ_KEY_EVENT_MGR = "_ea_obj_key_event_mgr"; const char *EA_OBJ_KEY_OBJ_EVENT = "_ea_obj_key_obj_event"; -const char *EA_KEY_BACK = "XF86Stop"; -const char *EA_KEY_BACK2 = "Escape"; +const char *EA_KEY_STOP = "XF86Stop"; +const char *EA_KEY_STOP2 = "Escape"; const char *EA_KEY_SEND = "XF86Send"; +const char *EA_KEY_SEND2 = "Menu"; + + +static Eina_List *event_mgrs = NULL; static void _ea_event_mgr_del(Ea_Event_Mgr *event_mgr) @@ -37,7 +43,7 @@ _ea_event_mgr_del(Ea_Event_Mgr *event_mgr) //Redundant Event Mgr. Remove it. evas_object_del(event_mgr->key_grab_rect); - _ea.event_mgrs = eina_list_remove(_ea.event_mgrs, event_mgr); + event_mgrs = eina_list_remove(event_mgrs, event_mgr); free(event_mgr); } @@ -232,10 +238,12 @@ _ea_key_grab_rect_key_up_cb(void *data, Evas *e, Evas_Object *obj, obj_event = _ea_top_obj_event_find(event_mgr); if (!obj_event) return; - if (!strcmp(ev->keyname, EA_KEY_BACK) || !strcmp(ev->keyname, EA_KEY_BACK2)) + if (!strcmp(ev->keyname, EA_KEY_STOP) || !strcmp(ev->keyname, EA_KEY_STOP2)) type = EA_CALLBACK_BACK; - else if (!strcmp(ev->keyname, EA_KEY_SEND)) + else if (!strcmp(ev->keyname, EA_KEY_SEND) || + !strcmp(ev->keyname, EA_KEY_SEND2)) type = EA_CALLBACK_MORE; + else return; obj_event->on_callback = EINA_TRUE; EINA_LIST_FOREACH(obj_event->callbacks, l, callback) @@ -255,14 +263,18 @@ _ea_key_grab_obj_create(Ea_Event_Mgr *event_mgr) evas_object_event_callback_add(key_grab_rect, EVAS_CALLBACK_KEY_UP, _ea_key_grab_rect_key_up_cb, event_mgr); - if (!evas_object_key_grab(key_grab_rect, EA_KEY_BACK, 0, 0, EINA_FALSE)) - CRITICAL("Failed to grab END KEY\n"); + if (!evas_object_key_grab(key_grab_rect, EA_KEY_STOP, 0, 0, EINA_FALSE)) + LOGE("Failed to grab END KEY\n"); - if (!evas_object_key_grab(key_grab_rect, EA_KEY_BACK2, 0, 0, EINA_FALSE)) - CRITICAL("Failed to grab END KEY\n"); + if (!evas_object_key_grab(key_grab_rect, EA_KEY_STOP2, 0, 0, EINA_FALSE)) + LOGE("Failed to grab END KEY\n"); if (!evas_object_key_grab(key_grab_rect, EA_KEY_SEND, 0, 0, EINA_FALSE)) - CRITICAL("Failed to grab MORE KEY\n"); + LOGE("Failed to grab MORE KEY\n"); + + if (!evas_object_key_grab(key_grab_rect, EA_KEY_SEND2, 0, 0, EINA_FALSE)) + LOGE("Failed to grab MORE KEY\n"); + event_mgr->key_grab_rect = key_grab_rect; } @@ -272,7 +284,7 @@ _ea_event_mgr_new(Evas *e) Ea_Event_Mgr *event_mgr = calloc(1, sizeof(Ea_Event_Mgr)); if (!event_mgr) { - ERR("Failed to allocate event manager"); + LOGE("Failed to allocate event manager"); return NULL; } event_mgr->e = e; @@ -281,32 +293,6 @@ _ea_event_mgr_new(Evas *e) return event_mgr; } -void -ea_event_mgr_clear(Ea_Event_Mgr *event_mgr) -{ - Ea_Object_Event *obj_event; - Ea_Event_Callback *callback; - Eina_List *l, *l2; - - //Remove Object Events - EINA_LIST_FOREACH(event_mgr->obj_events, l, obj_event) - { - evas_object_event_callback_del(obj_event->obj, EVAS_CALLBACK_DEL, - _ea_object_del_cb); - //Remove Callbacks - EINA_LIST_FOREACH(obj_event->callbacks, l2, callback) - free(callback); - obj_event->callbacks = eina_list_free(obj_event->callbacks); - - free(obj_event); - } - event_mgr->obj_events = eina_list_free(event_mgr->obj_events); - - evas_object_del(event_mgr->key_grab_rect); - - free(event_mgr); -} - EAPI void * ea_object_event_callback_del(Evas_Object *obj, Ea_Callback_Type type, Ea_Event_Cb func) { @@ -322,7 +308,7 @@ ea_object_event_callback_del(Evas_Object *obj, Ea_Callback_Type type, Ea_Event_C if (!event_mgr || !obj_event) { - WRN("This object(%p) hasn't been registered before", obj); + LOGW("This object(%p) hasn't been registered before", obj); return NULL; } @@ -370,7 +356,7 @@ ea_object_event_callback_add(Evas_Object *obj, Ea_Callback_Type type, Ea_Event_C //Check the registered event manager for this Evas. e = evas_object_evas_get(obj); - EINA_LIST_FOREACH(_ea.event_mgrs, l, event_mgr) + EINA_LIST_FOREACH(event_mgrs, l, event_mgr) { if (event_mgr->e == e) { @@ -383,7 +369,7 @@ ea_object_event_callback_add(Evas_Object *obj, Ea_Callback_Type type, Ea_Event_C if (new_event_mgr) { if (!(event_mgr = _ea_event_mgr_new(e))) return; - _ea.event_mgrs = eina_list_append(_ea.event_mgrs, event_mgr); + event_mgrs = eina_list_append(event_mgrs, event_mgr); } obj_event = evas_object_data_get(obj, EA_OBJ_KEY_OBJ_EVENT); @@ -394,7 +380,7 @@ ea_object_event_callback_add(Evas_Object *obj, Ea_Callback_Type type, Ea_Event_C obj_event = calloc(1, sizeof(Ea_Object_Event)); if (!obj_event) { - ERR("Failed to allocate object event"); + LOGE("Failed to allocate object event"); return; } evas_object_data_set(obj, EA_OBJ_KEY_OBJ_EVENT, obj_event); @@ -411,7 +397,7 @@ ea_object_event_callback_add(Evas_Object *obj, Ea_Callback_Type type, Ea_Event_C callback = calloc(1, sizeof(Ea_Event_Callback)); if (!callback) { - ERR("Failed to allocate event callback"); + LOGE("Failed to allocate event callback"); return; } callback->type = type; -- 2.7.4 From be6559e319e83d5f6e8ba698f10daf00dddfa111 Mon Sep 17 00:00:00 2001 From: Youngbok Shin Date: Thu, 27 Jun 2013 10:19:58 +0900 Subject: [PATCH 05/16] [editfield] Search_icon button was removed. Remove old codes. --- src/lib/efl_assist_editfield.c | 5 ----- 1 file changed, 5 deletions(-) diff --git a/src/lib/efl_assist_editfield.c b/src/lib/efl_assist_editfield.c index e7eebe4..7d57b75 100644 --- a/src/lib/efl_assist_editfield.c +++ b/src/lib/efl_assist_editfield.c @@ -139,11 +139,6 @@ ea_editfield_add(Evas_Object *parent, Ea_Editfield_Type type) if (type == EA_EDITFIELD_SEARCHBAR) { button = elm_button_add(parent); - elm_object_style_set(button, "search_icon"); - elm_object_focus_allow_set(button, EINA_FALSE); - elm_object_part_content_set(entry, "elm.swallow.icon", button); - - button = elm_button_add(parent); elm_object_style_set(button, "search_clear"); elm_object_focus_allow_set(button, EINA_FALSE); elm_object_part_content_set(entry, "elm.swallow.clear", button); -- 2.7.4 From e6b6b4969dcad859b5fe536d62e03d12a1c7ab87 Mon Sep 17 00:00:00 2001 From: Youngbok Shin Date: Thu, 27 Jun 2013 22:29:06 +0900 Subject: [PATCH 06/16] [editfield] Remove all of build warning message --- src/lib/efl_assist_editfield.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/lib/efl_assist_editfield.c b/src/lib/efl_assist_editfield.c index 7d57b75..701d52a 100644 --- a/src/lib/efl_assist_editfield.c +++ b/src/lib/efl_assist_editfield.c @@ -87,7 +87,7 @@ static Elm_Access_Info_Cb _editfield_searchbar_access_info_cb(void *data, Evas_O { const char *txt; txt = "Search bar"; - return strdup(txt); + return (Elm_Access_Info_Cb)strdup(txt); } EXPORT_API Evas_Object * @@ -149,7 +149,7 @@ ea_editfield_add(Evas_Object *parent, Ea_Editfield_Type type) evas_object_smart_callback_add(entry, "focused", _editfield_searchbar_focused_cb, NULL); evas_object_smart_callback_add(entry, "unfocused", _editfield_searchbar_unfocused_cb, NULL); - elm_access_info_cb_set(entry, ELM_ACCESS_TYPE, _editfield_searchbar_access_info_cb, NULL); + elm_access_info_cb_set(entry, ELM_ACCESS_TYPE, (Elm_Access_Info_Cb)_editfield_searchbar_access_info_cb, NULL); } else { -- 2.7.4 From 481813868fb6b8bd3a5c95157809eca2d0d70535 Mon Sep 17 00:00:00 2001 From: Youngbok Shin Date: Tue, 9 Jul 2013 21:19:49 +0900 Subject: [PATCH 07/16] [editfield] Remove accessibility setting --- src/lib/efl_assist_editfield.c | 9 --------- 1 file changed, 9 deletions(-) diff --git a/src/lib/efl_assist_editfield.c b/src/lib/efl_assist_editfield.c index 701d52a..f958bbe 100644 --- a/src/lib/efl_assist_editfield.c +++ b/src/lib/efl_assist_editfield.c @@ -83,13 +83,6 @@ static void _editfield_searchbar_unfocused_cb(void *data, Evas_Object *obj, void elm_object_signal_emit(obj, "elm,state,focus,off", ""); } -static Elm_Access_Info_Cb _editfield_searchbar_access_info_cb(void *data, Evas_Object *obj) -{ - const char *txt; - txt = "Search bar"; - return (Elm_Access_Info_Cb)strdup(txt); -} - EXPORT_API Evas_Object * ea_editfield_add(Evas_Object *parent, Ea_Editfield_Type type) { @@ -148,8 +141,6 @@ ea_editfield_add(Evas_Object *parent, Ea_Editfield_Type type) evas_object_smart_callback_add(entry, "preedit,changed", _editfield_searchbar_changed_cb, NULL); evas_object_smart_callback_add(entry, "focused", _editfield_searchbar_focused_cb, NULL); evas_object_smart_callback_add(entry, "unfocused", _editfield_searchbar_unfocused_cb, NULL); - - elm_access_info_cb_set(entry, ELM_ACCESS_TYPE, (Elm_Access_Info_Cb)_editfield_searchbar_access_info_cb, NULL); } else { -- 2.7.4 From c116e69c99fee18b19ddef01700bdbb9fa5ea511 Mon Sep 17 00:00:00 2001 From: Sungho Kwak Date: Wed, 17 Jul 2013 20:11:22 +0900 Subject: [PATCH 08/16] package upload Change-Id: I8fbe3f0676d8b6e8728df9e1a1f549e30f90f51f --- packaging/efl-assist.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packaging/efl-assist.spec b/packaging/efl-assist.spec index d1b0d19..7c26f59 100644 --- a/packaging/efl-assist.spec +++ b/packaging/efl-assist.spec @@ -1,6 +1,6 @@ Name: efl-assist Summary: EFL assist library -Version: 0.1.18r01 +Version: 0.1.18r02 Release: 1 Group: System/Libraries License: APLv2 -- 2.7.4 From b2573af3f94478fd1dff7689742227022139b1a4 Mon Sep 17 00:00:00 2001 From: Stephane Desneux Date: Sat, 16 Nov 2013 01:32:16 +0100 Subject: [PATCH 10/16] PTREL-400: fix build in x86_64 use %cmake macro in spec files, use LIB_INSTALL_DIR for install path instead of hardcoded /lib Change-Id: I44b6bb09e56c2956e78564fcc55e6f7406e22cee Signed-off-by: Stephane Desneux --- CMakeLists.txt | 6 +++--- packaging/efl-assist.spec | 2 +- src/lib/CMakeLists.txt | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 13616ea..de88413 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -4,7 +4,7 @@ PROJECT(efl-assist C) SET(PREFIX ${CMAKE_INSTALL_PREFIX}) SET(EXEC_DIR ${PREFIX}) SET(BINDIR ${PREFIX}/bin) -SET(LIBDIR ${PREFIX}/lib) +SET(LIBDIR ${LIB_INSTALL_DIR}) SET(INCDIR ${PREFIX}/include) SET(VERSION_MAJOR 0) SET(VERSION ${VERSION_MAJOR}.1.0) @@ -41,7 +41,7 @@ ADD_SUBDIRECTORY(src) SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS} -fPIC -Wall -Werror") SET(CMAKE_C_FLAGS_DEBUG "-O0 -g") -SET(CMAKE_EXE_LINKER_FLAGS "-Wl,--as-needed -Wl,--rpath=/usr/lib") +SET(CMAKE_EXE_LINKER_FLAGS "-Wl,--as-needed -Wl,--rpath=${LIBDIR}") CONFIGURE_FILE(${PROJECT_NAME}.pc.in ${PROJECT_NAME}.pc @ONLY) -INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.pc DESTINATION lib/pkgconfig) +INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.pc DESTINATION ${LIBDIR}/pkgconfig) diff --git a/packaging/efl-assist.spec b/packaging/efl-assist.spec index 7c26f59..05b8bb7 100644 --- a/packaging/efl-assist.spec +++ b/packaging/efl-assist.spec @@ -38,7 +38,7 @@ EFL assist library providing small utility functions (devel) %build export CFLAGS+=" -fvisibility=hidden" export LDFLAGS+=" -fvisibility=hidden" -cmake . -DCMAKE_INSTALL_PREFIX=/usr +%cmake . -DCMAKE_INSTALL_PREFIX=/usr make %{?jobs:-j%jobs} diff --git a/src/lib/CMakeLists.txt b/src/lib/CMakeLists.txt index b647f6f..4ea6fe0 100644 --- a/src/lib/CMakeLists.txt +++ b/src/lib/CMakeLists.txt @@ -18,5 +18,5 @@ SET_TARGET_PROPERTIES(${LIB_NAME} PROPERTIES VERSION ${VERSION}) SET_TARGET_PROPERTIES(${LIB_NAME} PROPERTIES SOVERSION ${VERSION_MAJOR}) TARGET_LINK_LIBRARIES(${LIB_NAME} ${LIB_PKGS_LDFLAGS} ${LIB_TARGET_PKGS_LDFLAGS}) -INSTALL(TARGETS ${LIB_NAME} DESTINATION lib) +INSTALL(TARGETS ${LIB_NAME} DESTINATION ${LIB_INSTALL_DIR}) -- 2.7.4 From 716420e94067e696d8942ad58b590728c667dd3d Mon Sep 17 00:00:00 2001 From: Philippe Coval Date: Thu, 6 Feb 2014 16:04:51 +0100 Subject: [PATCH 11/16] packaging: add missing dep to ecore-x Change-Id: Ifd6e063f127cfb897c060c1d289fa57d44d9660e Signed-off-by: Philippe Coval --- packaging/efl-assist.spec | 1 + 1 file changed, 1 insertion(+) diff --git a/packaging/efl-assist.spec b/packaging/efl-assist.spec index 05b8bb7..ccb0ce9 100644 --- a/packaging/efl-assist.spec +++ b/packaging/efl-assist.spec @@ -12,6 +12,7 @@ BuildRequires: pkgconfig(vconf) BuildRequires: pkgconfig(tts) BuildRequires: pkgconfig(capi-base-common) BuildRequires: pkgconfig(capi-appfw-application) +BuildRequires: pkgconfig(ecore-x) Requires(post): /sbin/ldconfig Requires(postun): /sbin/ldconfig -- 2.7.4 From 9207e5883d13a998dbbe8b8b7b53bd0c61c10ff3 Mon Sep 17 00:00:00 2001 From: Philippe Coval Date: Fri, 28 Feb 2014 11:54:48 +0100 Subject: [PATCH 12/16] workaround: disable X code on when building without X To be squashed when evas/wayland replace the todo parts Change-Id: I1ffc2b87a7206598107fac629d6bf77a9aa5d602 Bug-Tizen: PTREL-589 Signed-off-by: Philippe Coval --- CMakeLists.txt | 3 +++ packaging/efl-assist.spec | 14 +++++++++++++- src/lib/efl_assist_screen_reader.c | 12 ++++++++++++ 3 files changed, 28 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index de88413..fe0bcb5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -32,6 +32,9 @@ ADD_DEFINITIONS("-DPREFIX=\"${CMAKE_INSTALL_PREFIX}\"") ADD_DEFINITIONS("-DVERSION=\"${VERSION}\"") ADD_DEFINITIONS("-DPACKAGE=\"${PACKAGE}\"") ADD_DEFINITIONS("-DPLUGINDIR=\"${PLUGINDIR}\"") +IF(X11_SUPPORT) + ADD_DEFINITIONS("-DHAVE_X11") +ENDIF(X11_SUPPORT) SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fvisibility=hidden -Wall") INCLUDE(FindPkgConfig) diff --git a/packaging/efl-assist.spec b/packaging/efl-assist.spec index ccb0ce9..017ebb5 100644 --- a/packaging/efl-assist.spec +++ b/packaging/efl-assist.spec @@ -1,3 +1,5 @@ +%bcond_with x + Name: efl-assist Summary: EFL assist library Version: 0.1.18r02 @@ -12,7 +14,10 @@ BuildRequires: pkgconfig(vconf) BuildRequires: pkgconfig(tts) BuildRequires: pkgconfig(capi-base-common) BuildRequires: pkgconfig(capi-appfw-application) +%if %{with x} BuildRequires: pkgconfig(ecore-x) +%endif + Requires(post): /sbin/ldconfig Requires(postun): /sbin/ldconfig @@ -39,7 +44,14 @@ EFL assist library providing small utility functions (devel) %build export CFLAGS+=" -fvisibility=hidden" export LDFLAGS+=" -fvisibility=hidden" -%cmake . -DCMAKE_INSTALL_PREFIX=/usr + +%cmake . \ + -DCMAKE_INSTALL_PREFIX=/usr \ +%if %{with x} + -DX11_SUPPORT=On \ +%endif + #eol + make %{?jobs:-j%jobs} diff --git a/src/lib/efl_assist_screen_reader.c b/src/lib/efl_assist_screen_reader.c index 506308f..be7bd84 100644 --- a/src/lib/efl_assist_screen_reader.c +++ b/src/lib/efl_assist_screen_reader.c @@ -1,6 +1,10 @@ #include "efl_assist.h" #include "efl_assist_private.h" + +#ifdef HAVE_X #include +#endif + #include #include #define UNAVAILABLE_TEXT "Screen reader is unavailable during using this application. You can press home or back key to go back to home screen." @@ -112,6 +116,7 @@ static void _tts_init(void) static void _timeout_cb(void *data, Evas_Object *obj, void *event_info) { +#ifdef HAVE_X Ecore_X_Window xwin; unsigned int val; @@ -125,11 +130,15 @@ static void _timeout_cb(void *data, Evas_Object *obj, void *event_info) (xwin, ECORE_X_ATOM_E_ILLUME_ACCESS_CONTROL, &val, 1); _tts_shutdown(); +#else + fprintf(stderr, "TODO: workaround: disabled code from " __FILE__ ); +#endif } EAPI Eina_Bool ea_screen_reader_support_set(Evas_Object *win, Eina_Bool support) { +#ifdef HAVE_X Ecore_X_Window xwin; unsigned int val; int tts_val; @@ -170,6 +179,9 @@ ea_screen_reader_support_set(Evas_Object *win, Eina_Bool support) } return EINA_TRUE; +#else + fprintf(stderr, "TODO: workaround: disabled code from " __FILE__ ); +#endif } EAPI Eina_Bool -- 2.7.4 From a26c16c0d94ca2101a9c95a5295df7b224660f29 Mon Sep 17 00:00:00 2001 From: Philippe Coval Date: Fri, 28 Feb 2014 12:00:17 +0100 Subject: [PATCH 13/16] packaging: spec cleanup, use SPDX license tag Change-Id: Ib4d1278484850beffa0be76c572e80dd63fdb3f5 Signed-off-by: Philippe Coval --- packaging/efl-assist.spec | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/packaging/efl-assist.spec b/packaging/efl-assist.spec index 017ebb5..7cdcda1 100644 --- a/packaging/efl-assist.spec +++ b/packaging/efl-assist.spec @@ -3,9 +3,9 @@ Name: efl-assist Summary: EFL assist library Version: 0.1.18r02 -Release: 1 +Release: 0 Group: System/Libraries -License: APLv2 +License: Apache-2.0 Source0: %{name}-%{version}.tar.gz BuildRequires: cmake BuildRequires: pkgconfig(elementary) @@ -27,7 +27,7 @@ EFL assist library %package devel -Summary: EFL assista library (devel) +Summary: EFL assist library (devel) Group: Development/Libraries Requires: %{name} = %{version}-%{release} Requires: capi-base-common-devel @@ -74,7 +74,7 @@ cp %{_builddir}/%{buildsubdir}/LICENSE %{buildroot}/usr/share/license/%{name} #%{_bindir}/* %{_libdir}/libefl-assist.so.* %manifest %{name}.manifest -/usr/share/license/%{name} +%license /usr/share/license/%{name} %files devel -- 2.7.4 From 047b951d1963950298d6dd21a92fc8a870d784f3 Mon Sep 17 00:00:00 2001 From: Philippe Coval Date: Tue, 4 Mar 2014 15:36:30 +0100 Subject: [PATCH 14/16] fix: ea_screen_reader_support_set support wayland Note wayland gets priority over x11 when both available Change-Id: Id38c66dc7a2f6c10975779523a76205c4d11d687 Signed-off-by: Philippe Coval --- CMakeLists.txt | 3 ++ packaging/efl-assist.spec | 11 ++++++++ src/lib/efl_assist_screen_reader.c | 58 +++++++++++++++++++++++++++----------- 3 files changed, 55 insertions(+), 17 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index fe0bcb5..25a48c0 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -35,6 +35,9 @@ ADD_DEFINITIONS("-DPLUGINDIR=\"${PLUGINDIR}\"") IF(X11_SUPPORT) ADD_DEFINITIONS("-DHAVE_X11") ENDIF(X11_SUPPORT) +IF(WAYLAND_SUPPORT) + ADD_DEFINITIONS("-DHAVE_WAYLAND") +ENDIF(WAYLAND_SUPPORT) SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fvisibility=hidden -Wall") INCLUDE(FindPkgConfig) diff --git a/packaging/efl-assist.spec b/packaging/efl-assist.spec index 7cdcda1..b24b14c 100644 --- a/packaging/efl-assist.spec +++ b/packaging/efl-assist.spec @@ -1,4 +1,5 @@ %bcond_with x +%bcond_with wayland Name: efl-assist Summary: EFL assist library @@ -17,6 +18,9 @@ BuildRequires: pkgconfig(capi-appfw-application) %if %{with x} BuildRequires: pkgconfig(ecore-x) %endif +%if %{with wayland} +BuildRequires: pkgconfig(ecore-wayland) +%endif Requires(post): /sbin/ldconfig Requires(postun): /sbin/ldconfig @@ -49,6 +53,13 @@ export LDFLAGS+=" -fvisibility=hidden" -DCMAKE_INSTALL_PREFIX=/usr \ %if %{with x} -DX11_SUPPORT=On \ +%else + -DX11_SUPPORT=Off \ +%endif +%if %{with wayland} + -DWAYLAND_SUPPORT=On \ +%else + -DWAYLAND_SUPPORT=Off \ %endif #eol diff --git a/src/lib/efl_assist_screen_reader.c b/src/lib/efl_assist_screen_reader.c index be7bd84..d5740e5 100644 --- a/src/lib/efl_assist_screen_reader.c +++ b/src/lib/efl_assist_screen_reader.c @@ -1,9 +1,14 @@ #include "efl_assist.h" #include "efl_assist_private.h" +#include + #ifdef HAVE_X #include #endif +#ifdef HAVE_WAYLAND +#include +#endif #include #include @@ -116,30 +121,43 @@ static void _tts_init(void) static void _timeout_cb(void *data, Evas_Object *obj, void *event_info) { -#ifdef HAVE_X - Ecore_X_Window xwin; +#ifdef HAVE_WAYLAND + Ecore_Wl_Window *w; +#elif HAVE_X + Ecore_X_Window w; +#endif + unsigned int val; - xwin = elm_win_xwindow_get(data); - if (!xwin) return; +#ifdef HAVE_WAYLAND + w = elm_win_wl_window_get(data); +#elif HAVE_X + w = elm_win_xwindow_get(data); +#endif + if (!w) return; evas_object_del(obj); +#ifdef HAVE_X val = 2; ecore_x_window_prop_card32_set - (xwin, ECORE_X_ATOM_E_ILLUME_ACCESS_CONTROL, &val, 1); - - _tts_shutdown(); + (win, ECORE_X_ATOM_E_ILLUME_ACCESS_CONTROL, &val, 1); #else - fprintf(stderr, "TODO: workaround: disabled code from " __FILE__ ); + fprintf(stderr, "TODO: workaround: disabled code from " + __FILE__ ":%d:", __LINE__); #endif + _tts_shutdown(); + } EAPI Eina_Bool ea_screen_reader_support_set(Evas_Object *win, Eina_Bool support) { -#ifdef HAVE_X - Ecore_X_Window xwin; +#ifdef HAVE_WAYLAND + Ecore_Wl_Window *w; +#elif HAVE_X + Ecore_X_Window w; +#endif unsigned int val; int tts_val; Evas_Object *base; @@ -153,16 +171,25 @@ ea_screen_reader_support_set(Evas_Object *win, Eina_Bool support) if (!win) return EINA_FALSE; - xwin = elm_win_xwindow_get(win); - if (!xwin) return EINA_FALSE; +#ifdef HAVE_WAYLAND + w = elm_win_wl_window_get(win); +#elif HAVE_X + w = elm_win_xwindow_get(win); +#endif + + if (!w) return EINA_FALSE; if (support) { val = 0; elm_config_access_set(EINA_TRUE); - +#ifdef HAVE_X ecore_x_window_prop_card32_set - (xwin, ECORE_X_ATOM_E_ILLUME_ACCESS_CONTROL, &val, 1); + (w, ECORE_X_ATOM_E_ILLUME_ACCESS_CONTROL, &val, 1); +#else + fprintf(stderr, "TODO: workaround: disabled code from " + __FILE__ ":%d:", __LINE__); +#endif } else { @@ -179,9 +206,6 @@ ea_screen_reader_support_set(Evas_Object *win, Eina_Bool support) } return EINA_TRUE; -#else - fprintf(stderr, "TODO: workaround: disabled code from " __FILE__ ); -#endif } EAPI Eina_Bool -- 2.7.4 From 7a128ea063137fabe7ab3b199b8945627a01f51c Mon Sep 17 00:00:00 2001 From: Philippe Coval Date: Wed, 5 Mar 2014 10:53:45 +0100 Subject: [PATCH 15/16] fix: x11 get priority over wayland when both available (Could be squashed in 047b951d1963950298d6dd21a92fc8a870d784f3) Change-Id: Ic49e6d952bf16ca96985ab3c3d078c93ffd049a5 Signed-off-by: Philippe Coval --- src/lib/efl_assist_screen_reader.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/lib/efl_assist_screen_reader.c b/src/lib/efl_assist_screen_reader.c index d5740e5..76f8fc8 100644 --- a/src/lib/efl_assist_screen_reader.c +++ b/src/lib/efl_assist_screen_reader.c @@ -121,18 +121,18 @@ static void _tts_init(void) static void _timeout_cb(void *data, Evas_Object *obj, void *event_info) { -#ifdef HAVE_WAYLAND - Ecore_Wl_Window *w; -#elif HAVE_X - Ecore_X_Window w; +#ifdef HAVE_X + Ecore_X_Window w; +#elif defined HAVE_WAYLAND + Ecore_Wl_Window *w; #endif unsigned int val; -#ifdef HAVE_WAYLAND - w = elm_win_wl_window_get(data); -#elif HAVE_X +#ifdef HAVE_X w = elm_win_xwindow_get(data); +#elif defined HAVE_WAYLAND + w = elm_win_wl_window_get(data); #endif if (!w) return; @@ -153,10 +153,10 @@ static void _timeout_cb(void *data, Evas_Object *obj, void *event_info) EAPI Eina_Bool ea_screen_reader_support_set(Evas_Object *win, Eina_Bool support) { -#ifdef HAVE_WAYLAND - Ecore_Wl_Window *w; -#elif HAVE_X +#ifdef HAVE_X Ecore_X_Window w; +#elif defined HAVE_WAYLAND + Ecore_Wl_Window *w; #endif unsigned int val; int tts_val; -- 2.7.4 From 2659fedd5554aa32ddc72c3ff4c7a11c759cfd36 Mon Sep 17 00:00:00 2001 From: Philippe Coval Date: Mon, 10 Mar 2014 10:38:18 +0100 Subject: [PATCH 16/16] dynamically test x11 and wl at runtime This version builds on x11, wl and xwl Change-Id: I0d237bd9fffa9dc42bda767c3c32c9073a80f72a Signed-off-by: Philippe Coval --- src/lib/efl_assist_screen_reader.c | 54 ++++++++++++++++++++------------------ 1 file changed, 28 insertions(+), 26 deletions(-) diff --git a/src/lib/efl_assist_screen_reader.c b/src/lib/efl_assist_screen_reader.c index 76f8fc8..0c2efa5 100644 --- a/src/lib/efl_assist_screen_reader.c +++ b/src/lib/efl_assist_screen_reader.c @@ -3,7 +3,7 @@ #include -#ifdef HAVE_X +#ifdef HAVE_X11 #include #endif #ifdef HAVE_WAYLAND @@ -121,42 +121,44 @@ static void _tts_init(void) static void _timeout_cb(void *data, Evas_Object *obj, void *event_info) { -#ifdef HAVE_X - Ecore_X_Window w; -#elif defined HAVE_WAYLAND - Ecore_Wl_Window *w; +#ifdef HAVE_X11 + Ecore_X_Window xwin=0; +#endif +#ifdef HAVE_WAYLAND + Ecore_Wl_Window *wwin=0; #endif - unsigned int val; -#ifdef HAVE_X - w = elm_win_xwindow_get(data); -#elif defined HAVE_WAYLAND - w = elm_win_wl_window_get(data); +#ifdef HAVE_X11 + xwin = elm_win_xwindow_get(data); + if (xwin>0) { + evas_object_del(obj); obj=0; + val = 2; + ecore_x_window_prop_card32_set + (xwin, ECORE_X_ATOM_E_ILLUME_ACCESS_CONTROL, &val, 1); + } else #endif - if (!w) return; - - evas_object_del(obj); + { +#ifdef HAVE_WAYLAND + wwin = elm_win_wl_window_get(data); + if (wwin != NULL) { + evas_object_del(obj); obj=0; -#ifdef HAVE_X - val = 2; - ecore_x_window_prop_card32_set - (win, ECORE_X_ATOM_E_ILLUME_ACCESS_CONTROL, &val, 1); -#else - fprintf(stderr, "TODO: workaround: disabled code from " - __FILE__ ":%d:", __LINE__); + fprintf(stderr, "TODO: workaround: disabled code from " + __FILE__ ":%d:", __LINE__); + } #endif + } _tts_shutdown(); - } EAPI Eina_Bool ea_screen_reader_support_set(Evas_Object *win, Eina_Bool support) { -#ifdef HAVE_X - Ecore_X_Window w; +#ifdef HAVE_X11 + Ecore_X_Window w=0; #elif defined HAVE_WAYLAND - Ecore_Wl_Window *w; + Ecore_Wl_Window *w=0; #endif unsigned int val; int tts_val; @@ -173,7 +175,7 @@ ea_screen_reader_support_set(Evas_Object *win, Eina_Bool support) #ifdef HAVE_WAYLAND w = elm_win_wl_window_get(win); -#elif HAVE_X +#elif HAVE_X11 w = elm_win_xwindow_get(win); #endif @@ -183,7 +185,7 @@ ea_screen_reader_support_set(Evas_Object *win, Eina_Bool support) { val = 0; elm_config_access_set(EINA_TRUE); -#ifdef HAVE_X +#ifdef HAVE_X11 ecore_x_window_prop_card32_set (w, ECORE_X_ATOM_E_ILLUME_ACCESS_CONTROL, &val, 1); #else -- 2.7.4