bool suspended_state;
bool allowed_bg;
bool dirty;
+ guint sid;
} appcore_base_context;
typedef struct _appcore_base_event_node {
{
char *val;
+ if (__context.sid) {
+ g_source_remove(__context.sid);
+ __context.sid = 0;
+ }
+
val = vconf_keynode_get_str(key);
__update_lang();
free(val);
}
+static gboolean __invoke_lang_change(gpointer data)
+{
+ const char *lang;
+
+ __context.sid = 0;
+
+ lang = getenv("LANG");
+ if (!lang)
+ return G_SOURCE_REMOVE;
+
+ __invoke_callback((void *)lang, APPCORE_BASE_EVENT_LANG_CHANGE);
+
+ return G_SOURCE_REMOVE;
+}
+
+static void __verify_language(void)
+{
+ char *lang;
+ const char *env_lang;
+
+ env_lang = getenv("LANG");
+ if (!env_lang)
+ return;
+
+ lang = vconf_get_str(VCONFKEY_LANGSET);
+ if (!lang)
+ return;
+
+ if (strcmp(env_lang, lang) != 0) {
+ _INFO("LANG(%s), LANGSET(%s)", env_lang, lang);
+ __context.sid = g_idle_add(__invoke_lang_change, NULL);
+ }
+
+ free(lang);
+}
+
static gboolean __flush_memory(gpointer data)
{
int suspend = APPCORE_BASE_SUSPENDED_STATE_WILL_ENTER_SUSPEND;
if (__context.ops.init)
__context.ops.init(argc, argv, data);
+ __verify_language();
if (__context.ops.set_i18n)
__context.ops.set_i18n(__context.data);
}
}
+ if (__context.sid) {
+ g_source_remove(__context.sid);
+ __context.sid = 0;
+ }
+
g_list_free_full(__events, free);
__events = NULL;