diff options
author | Fabio Mello <fabio.mello@intel.com> | 2014-02-14 10:35:57 -0200 |
---|---|---|
committer | Semun Lee <sm79.lee@samsung.com> | 2014-03-07 13:56:03 +0900 |
commit | 084d912cb688c5a9257b3446b2f5f40260d16c6f (patch) | |
tree | 313e9ac9cb29eec80883f89781e62553d40e920d | |
parent | 92210284ef62357b7a08fbd973d291ee1afe04ec (diff) | |
download | ui-gadget-1-084d912cb688c5a9257b3446b2f5f40260d16c6f.tar.gz ui-gadget-1-084d912cb688c5a9257b3446b2f5f40260d16c6f.tar.bz2 ui-gadget-1-084d912cb688c5a9257b3446b2f5f40260d16c6f.zip |
Apps should not require ecore_x.
The current UG_INIT_EFL() macro forces the applications who uses it to depend
on ecore_x. This patch uses a higher level of abstraction in this macro, this
approach lets ui-gadget-1 handle the display server without expose this to its
dependents.
Signed-off-by: Leandro Dorileo <leandro.maciel.dorileo@intel.com>
Signed-off-by: Fabio Mello <fabio.mello@intel.com>
Conflicts:
CMakeLists.txt
Change-Id: I9a1683df1ee64b2d997b0edfedc6bfc695aed9e7
-rw-r--r-- | CMakeLists.txt | 2 | ||||
-rw-r--r-- | include/ug-manager.h | 3 | ||||
-rw-r--r-- | include/ui-gadget.h | 35 | ||||
-rw-r--r-- | packaging/ui-gadget-1.spec | 1 | ||||
-rw-r--r-- | src/manager.c | 11 | ||||
-rw-r--r-- | src/ug.c | 15 |
6 files changed, 62 insertions, 5 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index c665300..ed72a99 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -26,7 +26,7 @@ SET(SRCS src/ug.c ADD_LIBRARY(${PROJECT_NAME} SHARED ${SRCS}) -SET(PKGS_CHECK_MODULES "glib-2.0 bundle dlog capi-appfw-application appsvc capi-appfw-app-manager ecore libtzplatform-config") +SET(PKGS_CHECK_MODULES "glib-2.0 bundle dlog capi-appfw-application appsvc capi-appfw-app-manager ecore elementary libtzplatform-config") IF (with_x) PKG_CHECK_MODULES(PKGS REQUIRED ${PKGS_CHECK_MODULES} utilX x11) ENDIF(with_x) diff --git a/include/ug-manager.h b/include/ug-manager.h index f5ac47e..7c7e059 100644 --- a/include/ug-manager.h +++ b/include/ug-manager.h @@ -26,6 +26,7 @@ #include <utilX.h> #endif +#include <Evas.h> #include "ug.h" int ugman_ug_add(ui_gadget_h parent, ui_gadget_h ug); @@ -41,6 +42,8 @@ int ugman_ug_del_all(void); int ugman_init(Display *disp, Window xid, void *win, enum ug_option opt); #endif +int ugman_init_efl(Evas_Object *win, enum ug_option opt); + int ugman_resume(void); int ugman_pause(void); int ugman_send_event(enum ug_event event); diff --git a/include/ui-gadget.h b/include/ui-gadget.h index 41f5637..bc4a1e8 100644 --- a/include/ui-gadget.h +++ b/include/ui-gadget.h @@ -58,6 +58,7 @@ #include <X11/Xlib.h> #endif +#include <Evas.h> #include <app.h> #ifdef __cplusplus @@ -163,11 +164,8 @@ struct ug_cbs { * Easy-to-use macro of ug_init() for EFL * @see ug_init() */ -#ifndef WAYLAND #define UG_INIT_EFL(win, opt) \ - ug_init((Display *)ecore_x_display_get(), elm_win_xwindow_get(win), \ - win, opt) -#endif + ug_init_efl(win, opt) /** * Easy-to-use macro of ug_init() for GTK @@ -222,6 +220,35 @@ struct ug_cbs { #ifndef WAYLAND int ug_init(Display *disp, Window xid, void *win, enum ug_option opt); #endif + +/** + * \par Description: + * This function initializes default window and indicator state. + * + * @param[in] win A pointer to window evas object. + * @param[in] opt Default indicator state to restore application's indicator state + * @return 0 on success, -1 on error + * + * \pre None + * \post None + * \see UG_INIT_EFL() + * \remarks None + * + * \par Sample code: + * \code + * #include <ui-gadget.h> + * ... + * Evas_Object *win; + * ... + * // create window + * ... + * ug_init_efl(win, UG_OPT_INDICATOR_ENABLE); + * // for convenience you can use following macro: ELM_INIT_EFL(win, UG_OPT_INDICATOR_ENABLE); + * ... + * \endcode + */ +int ug_init_efl(Evas_Object *win, enum ug_option opt); + /** * \par Description: * This function creates a UI gadget diff --git a/packaging/ui-gadget-1.spec b/packaging/ui-gadget-1.spec index 3c084a9..e8e5113 100644 --- a/packaging/ui-gadget-1.spec +++ b/packaging/ui-gadget-1.spec @@ -20,6 +20,7 @@ BuildRequires: pkgconfig(utilX) BuildRequires: pkgconfig(x11) %endif BuildRequires: pkgconfig(appsvc) +BuildRequires: pkgconfig(elementary) BuildRequires: pkgconfig(capi-appfw-application) BuildRequires: pkgconfig(capi-appfw-app-manager) BuildRequires: pkgconfig(vconf) diff --git a/src/manager.c b/src/manager.c index 015e1eb..5c9cbed 100644 --- a/src/manager.c +++ b/src/manager.c @@ -29,6 +29,7 @@ #include <utilX.h> #include <X11/Xatom.h> #include <X11/Xutil.h> +#include <Ecore_X.h> #endif #include <Ecore.h> @@ -910,6 +911,16 @@ int ugman_init(Display *disp, Window xid, void *win, enum ug_option opt) } #endif +int ugman_init_efl(Evas_Object *win, enum ug_option opt) +{ +#ifndef WAYLAND + Ecore_X_Window xwin = elm_win_xwindow_get(win); + if (xwin) + return ugman_init((Display *)ecore_x_display_get(), xwin, win, opt); +#endif + return -1; +} + int ugman_resume(void) { /* RESUME */ @@ -111,6 +111,21 @@ UG_API int ug_init(Display *disp, Window xid, void *win, enum ug_option opt) } #endif +UG_API int ug_init_efl(Evas_Object *win, enum ug_option opt) +{ + if (!win) { + _ERR("ug_init_efl() failed: Invalid arguments"); + return -1; + } + + if (opt < UG_OPT_INDICATOR_ENABLE || opt >= UG_OPT_MAX) { + _ERR("ug_init_efl() failed: Invalid option"); + return -1; + } + + return ugman_init_efl(win, opt); +} + UG_API int ug_pause(void) { return ugman_pause(); |