zehortigoza pushed a commit to branch master.
commit 76e69f9323f5a1ef87d8f9120b4f8d03498d526b
Author: José Roberto de Souza <[email protected]>
Date: Wed Aug 14 16:06:22 2013 -0300
ecore system: Add Tizen backend
---
configure.ac | 38 ++--
src/Makefile_Ecore.am | 19 ++
src/lib/ecore/ecore.c | 3 +
.../ecore/system/tizen/ecore_system_tizen.c | 200 +++++++++++++++++++++
4 files changed, 247 insertions(+), 13 deletions(-)
diff --git a/configure.ac b/configure.ac
index ebb7a7b..e89a678 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1752,6 +1752,31 @@ AC_ARG_ENABLE([gstreamer],
],
[want_gstreamer="yes"])
+AC_ARG_ENABLE([tizen],
+ [AC_HELP_STRING([--enable-tizen],
+ [enable tizen support. @<:@default=disabled@:>@])],
+ [
+ if test "x${enableval}" = "xyes" ; then
+ want_tizen="yes"
+ else
+ want_tizen="no"
+ fi
+ ],
+ [want_tizen="no"])
+
+if test "${want_tizen}" = "yes"; then
+ PKG_CHECK_MODULES([TIZEN_CONFIGURATION_MANAGER],
+ [vconf],
+ [have_tizen_vconf="yes"],
+ [have_tizen_vconf="no"])
+ PKG_CHECK_MODULES([TIZEN_CONFIGURATION_MANAGER], [vconf])
+fi
+
+AM_CONDITIONAL([HAVE_TIZEN_CONFIGURATION_MANAGER], [test "${have_tizen_vconf}"
= "yes"])
+if test "${have_tizen_vconf}" = "yes"; then
+ AC_DEFINE(HAVE_TIZEN_CONFIGURATION_MANAGER, 1, [Define to 1 if you have
Tizen configuration manager(vconf).])
+fi
+
### Default values
if test "${have_windows}" = "yes"; then
@@ -3234,23 +3259,10 @@ EFL_LIB_END([Efreet])
have_libmount_new="no"
have_libmount_old="no"
have_eeze_mount="no"
-want_tizen="no"
EFL_LIB_START_OPTIONAL([Eeze], [test "${have_linux}" = "yes"])
### Additional options to configure
-AC_ARG_ENABLE([tizen],
- [AC_HELP_STRING([--enable-tizen],
- [enable tizen support. @<:@default=disabled@:>@])],
- [
- if test "x${enableval}" = "xyes" ; then
- want_tizen="yes"
- else
- want_tizen="no"
- fi
- ],
- [want_tizen="no"])
-
AC_ARG_WITH([mount],
[AS_HELP_STRING([--with-mount], [specify mount bin @<:@default=detect@:>@])],
[with_eeze_mount=$withval], [with_eeze_mount="detect"])
diff --git a/src/Makefile_Ecore.am b/src/Makefile_Ecore.am
index c1fbf6b..89cb328 100644
--- a/src/Makefile_Ecore.am
+++ b/src/Makefile_Ecore.am
@@ -105,6 +105,25 @@ modules_ecore_system_upower_module_la_DEPENDENCIES = \
modules_ecore_system_upower_module_la_LDFLAGS = -module @EFL_LTMODULE_FLAGS@
modules_ecore_system_upower_module_la_LIBTOOLFLAGS = --tag=disable-static
+# tizen
+
+if HAVE_TIZEN_CONFIGURATION_MANAGER
+ecoretizenpkgdir = $(libdir)/ecore/system/tizen/$(MODULE_ARCH)
+ecoretizenpkg_LTLIBRARIES = modules/ecore/system/tizen/module.la
+modules_ecore_system_tizen_module_la_SOURCES = \
+modules/ecore/system/tizen/ecore_system_tizen.c
+modules_ecore_system_tizen_module_la_CPPFLAGS = \
+-I$(top_builddir)/src/lib/efl \
+@ECORE_CFLAGS@ \
+@TIZEN_CONFIGURATION_MANAGER_CFLAGS@
+modules_ecore_system_tizen_module_la_LIBADD = \
+@USE_ECORE_LIBS@ \
+@TIZEN_CONFIGURATION_MANAGER_LIBS@
+modules_ecore_system_tizen_module_la_DEPENDENCIES = \
+@USE_ECORE_INTERNAL_LIBS@
+modules_ecore_system_tizen_module_la_LDFLAGS = -module @EFL_LTMODULE_FLAGS@
+modules_ecore_system_tizen_module_la_LIBTOOLFLAGS = --tag=disable-static
+endif
### Unit tests
diff --git a/src/lib/ecore/ecore.c b/src/lib/ecore/ecore.c
index efdc344..bd7f077 100644
--- a/src/lib/ecore/ecore.c
+++ b/src/lib/ecore/ecore.c
@@ -136,6 +136,9 @@ ecore_system_modules_load(void)
#ifdef HAVE_SYSTEMD
"systemd",
#endif
+#ifdef HAVE_TIZEN_CONFIGURATION_MANAGER
+ "tizen",
+#endif
NULL
};
const char **itr;
diff --git a/src/modules/ecore/system/tizen/ecore_system_tizen.c
b/src/modules/ecore/system/tizen/ecore_system_tizen.c
new file mode 100644
index 0000000..69c2cf7
--- /dev/null
+++ b/src/modules/ecore/system/tizen/ecore_system_tizen.c
@@ -0,0 +1,200 @@
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
+#include <Ecore.h>
+#include <vconf.h>
+#include <locale.h>
+
+static int _log_dom = -1;
+
+#ifdef CRITICAL
+#undef CRITICAL
+#endif
+#define CRITICAL(...) EINA_LOG_DOM_CRIT(_log_dom, __VA_ARGS__)
+
+#ifdef ERR
+#undef ERR
+#endif
+#define ERR(...) EINA_LOG_DOM_ERR(_log_dom, __VA_ARGS__)
+
+#ifdef WRN
+#undef WRN
+#endif
+#define WRN(...) EINA_LOG_DOM_WARN(_log_dom, __VA_ARGS__)
+
+#ifdef DBG
+#undef DBG
+#endif
+#define DBG(...) EINA_LOG_DOM_DBG(_log_dom, __VA_ARGS__)
+
+static void _low_mem_key_changed_cb(keynode_t *node EINA_UNUSED, void *data
EINA_UNUSED)
+{
+ int status;
+
+ if (vconf_get_int(VCONFKEY_SYSMAN_LOW_MEMORY, &status) < 0)
+ return;
+
+ if (status == VCONFKEY_SYSMAN_LOW_MEMORY_NORMAL)
+ ecore_memory_state_set(ECORE_MEMORY_STATE_NORMAL);
+ else
+ ecore_memory_state_set(ECORE_MEMORY_STATE_LOW);
+}
+
+static void _charge_key_changed_cb(keynode_t *node EINA_UNUSED, void *data
EINA_UNUSED)
+{
+ int charging, status;
+
+ if (vconf_get_int(VCONFKEY_SYSMAN_BATTERY_CHARGE_NOW, &charging) < 0)
+ return;
+
+ if (charging)
+ {
+ ecore_power_state_set(ECORE_POWER_STATE_MAINS);
+ return;
+ }
+
+ if (vconf_get_int(VCONFKEY_SYSMAN_BATTERY_STATUS_LOW, &status) < 0)
+ return;
+
+ if (status == VCONFKEY_SYSMAN_BAT_NORMAL || status ==
VCONFKEY_SYSMAN_BAT_FULL)
+ ecore_power_state_set(ECORE_POWER_STATE_BATTERY);
+ else
+ ecore_power_state_set(ECORE_POWER_STATE_LOW);
+}
+
+static void _low_batt_key_changed_cb(keynode_t *node EINA_UNUSED, void *data
EINA_UNUSED)
+{
+ _charge_key_changed_cb(NULL, NULL);
+}
+
+static void _lang_key_changed_cb(keynode_t *node EINA_UNUSED, void *first)
+{
+ char *lang;
+
+ lang = vconf_get_str(VCONFKEY_LANGSET);
+ if (!lang)
+ return;
+
+ setenv("LANG", lang, 1);
+ setenv("LC_MESSAGES", lang, 1);
+ setlocale(__LC_ALL, "");
+
+ if (!first)
+ ecore_event_add(ECORE_EVENT_LOCALE_CHANGED, NULL, NULL, NULL);
+ free(lang);
+}
+
+static void _region_fmt_key_changed_cb(keynode_t *node EINA_UNUSED, void
*first)
+{
+ char *region;
+
+ region = vconf_get_str(VCONFKEY_REGIONFORMAT);
+ if (!region)
+ return;
+
+ setenv("LC_CTYPE", region, 1);
+ setenv("LC_NUMERIC", region, 1);
+ setenv("LC_TIME", region, 1);
+ setenv("LC_COLLATE", region, 1);
+ setenv("LC_MONETARY", region, 1);
+ setenv("LC_PAPER", region, 1);
+ setenv("LC_NAME", region, 1);
+ setenv("LC_ADDRESS", region, 1);
+ setenv("LC_TELEPHONE", region, 1);
+ setenv("LC_MEASUREMENT", region, 1);
+ setenv("LC_IDENTIFICATION", region, 1);
+ setlocale(__LC_ALL, "");
+
+ if (!first)
+ ecore_event_add(ECORE_EVENT_LOCALE_CHANGED, NULL, NULL, NULL);
+ free(region);
+}
+
+static void _time_fmt_key_changed_cb(keynode_t *node EINA_UNUSED, void *data
EINA_UNUSED)
+{
+ ecore_event_add(ECORE_EVENT_LOCALE_CHANGED, NULL, NULL, NULL);
+}
+
+static Eina_Bool
+_ecore_system_tizen_init(void)
+{
+ _log_dom = eina_log_domain_register("ecore_system_tizen", NULL);
+ if (_log_dom < 0)
+ {
+ EINA_LOG_ERR("Could not register log domain: ecore_system_tizen");
+ return EINA_FALSE;
+ }
+
+ if (vconf_notify_key_changed(VCONFKEY_SYSMAN_LOW_MEMORY,
_low_mem_key_changed_cb, NULL) < 0)
+ {
+ ERR("Unable to register a vconf changed cb to %s.",
VCONFKEY_SYSMAN_LOW_MEMORY);
+ goto err_low_memory;
+ }
+ _low_mem_key_changed_cb(NULL, NULL);
+
+ if (vconf_notify_key_changed(VCONFKEY_SYSMAN_BATTERY_CHARGE_NOW,
_charge_key_changed_cb, NULL) < 0)
+ {
+ ERR("Unable to register a vconf changed cb to %s.",
VCONFKEY_SYSMAN_BATTERY_CHARGE_NOW);
+ goto err_charge;
+ }
+
+ if (vconf_notify_key_changed(VCONFKEY_SYSMAN_BATTERY_STATUS_LOW,
_low_batt_key_changed_cb, NULL) < 0)
+ {
+ ERR("Unable to register a vconf changed cb to %s.",
VCONFKEY_SYSMAN_BATTERY_STATUS_LOW);
+ goto err_batt_status_low;
+ }
+ _low_batt_key_changed_cb(NULL, NULL);
+
+ if (vconf_notify_key_changed(VCONFKEY_LANGSET, _lang_key_changed_cb, NULL)
< 0)
+ {
+ ERR("Unable to register a vconf changed cb to %s.", VCONFKEY_LANGSET);
+ goto err_lang;
+ }
+ _lang_key_changed_cb(NULL, (void *)1);
+
+ if (vconf_notify_key_changed(VCONFKEY_REGIONFORMAT,
_region_fmt_key_changed_cb, NULL) < 0)
+ {
+ ERR("Unable to register a vconf changed cb to %s.",
VCONFKEY_REGIONFORMAT);
+ goto err_region_fmt;
+ }
+ _region_fmt_key_changed_cb(NULL, (void *)1);
+
+ if (vconf_notify_key_changed(VCONFKEY_REGIONFORMAT_TIME1224,
_time_fmt_key_changed_cb, NULL) < 0)
+ {
+ ERR("Unable to register a vconf changed cb to %s.",
VCONFKEY_REGIONFORMAT_TIME1224);
+ goto err_time_fmt;
+ }
+
+ return EINA_TRUE;
+
+err_time_fmt:
+ vconf_ignore_key_changed(VCONFKEY_REGIONFORMAT, _lang_key_changed_cb);
+err_region_fmt:
+ vconf_ignore_key_changed(VCONFKEY_LANGSET, _lang_key_changed_cb);
+err_lang:
+ vconf_ignore_key_changed(VCONFKEY_SYSMAN_BATTERY_STATUS_LOW,
_low_batt_key_changed_cb);
+err_batt_status_low:
+ vconf_ignore_key_changed(VCONFKEY_SYSMAN_BATTERY_CHARGE_NOW,
_charge_key_changed_cb);
+err_charge:
+ vconf_ignore_key_changed(VCONFKEY_SYSMAN_LOW_MEMORY,
_low_mem_key_changed_cb);
+err_low_memory:
+ eina_log_domain_unregister(_log_dom);
+ _log_dom = -1;
+ return EINA_FALSE;
+}
+
+static void
+_ecore_system_tizen_shutdown(void)
+{
+ vconf_ignore_key_changed(VCONFKEY_REGIONFORMAT, _region_fmt_key_changed_cb);
+ vconf_ignore_key_changed(VCONFKEY_LANGSET, _lang_key_changed_cb);
+ vconf_ignore_key_changed(VCONFKEY_SYSMAN_BATTERY_STATUS_LOW,
_low_batt_key_changed_cb);
+ vconf_ignore_key_changed(VCONFKEY_SYSMAN_BATTERY_CHARGE_NOW,
_charge_key_changed_cb);
+ vconf_ignore_key_changed(VCONFKEY_SYSMAN_LOW_MEMORY,
_low_mem_key_changed_cb);
+ eina_log_domain_unregister(_log_dom);
+ _log_dom = -1;
+}
+
+EINA_MODULE_INIT(_ecore_system_tizen_init);
+EINA_MODULE_SHUTDOWN(_ecore_system_tizen_shutdown);
--
------------------------------------------------------------------------------
Get 100% visibility into Java/.NET code with AppDynamics Lite!
It's a free troubleshooting tool designed for production.
Get down to code-level detail for bottlenecks, with <2% overhead.
Download for free and get started troubleshooting in minutes.
http://pubads.g.doubleclick.net/gampad/clk?id=48897031&iu=/4140/ostg.clktrk