#include <Ecore.h>
#include <Eina.h>
+#include <livebox-service.h>
+
#include "client_life.h"
#include "setting.h"
#include "util.h"
#include "critical_log.h"
#include "xmonitor.h"
#include "conf.h"
+#include "package.h"
+#include "instance.h"
int errno;
ErrPrint("stop.provider [%s]\n", strerror(errno));
vconf_set_bool(VCONFKEY_MASTER_STARTED, 0);
- exit(0);
- //ecore_main_loop_quit();
+ //exit(0);
+ ecore_main_loop_quit();
} else {
ErrPrint("Unknown power state: %d\n", val);
}
if (r == NULL)
ErrPrint("Failed to change region\n");
- free(region);
+ DbgFree(region);
}
static void lang_changed_cb(keynode_t *node, void *user_data)
ErrPrint("Failed to change locale\n");
DbgPrint("Locale: %s\n", setlocale(LC_ALL, NULL));
- free(lang);
+ DbgFree(lang);
+}
+
+static void ail_info_cb(keynode_t *node, void *user_data)
+{
+ Eina_List *inst_list;
+ Eina_List *pkg_list;
+ struct inst_info *inst;
+ Eina_List *l;
+ Eina_List *n;
+ Eina_List *j;
+ struct pkg_info *info;
+ char *event;
+ char *appid;
+ char *pkgname;
+ int len;
+ int enabled;
+
+ event = vconf_get_str(VCONFKEY_AIL_INFO_STATE);
+ if (!event)
+ return;
+
+ len = strlen("update:");
+ if (!strncasecmp(event, "update:", len))
+ goto out;
+
+ appid = event + len;
+ DbgPrint("AppId: [%s]\n", appid);
+
+ enabled = package_is_enabled(appid);
+
+ DbgPrint("AppId: %s, %d\n", appid, enabled);
+ if (enabled != 0) {
+ /*
+ * \note
+ * reload?
+ */
+ goto out;
+ }
+
+ len = strlen(appid);
+
+ pkg_list = (Eina_List *)package_list();
+ EINA_LIST_FOREACH(pkg_list, l, info) {
+ inst_list = NULL;
+ pkgname = livebox_service_mainappid(package_name(info));
+ if (!pkgname)
+ continue;
+
+ if (strcmp(appid, pkgname)) {
+ DbgFree(pkgname);
+ continue;
+ }
+ DbgPrint("Package disabled: %s (%s)\n", pkgname, appid);
+ DbgFree(pkgname);
+
+ inst_list = package_instance_list(info);
+ EINA_LIST_FOREACH_SAFE(inst_list, j, n, inst) {
+ instance_destroy(inst);
+ }
+ }
+
+out:
+ DbgFree(event);
}
HAPI int setting_init(void)
if (ret < 0)
ErrPrint("Failed to add vconf for region change: %d\n", ret);
+ ret = vconf_notify_key_changed(VCONFKEY_AIL_INFO_STATE, ail_info_cb, NULL);
+ if (ret < 0)
+ ErrPrint("Failed to add vconf for ail info state: %d\n", ret);
+
lang_changed_cb(NULL, NULL);
region_changed_cb(NULL, NULL);
return ret;
if (ret < 0)
ErrPrint("Failed to ignore vconf key (%d)\n", ret);
+ ret = vconf_ignore_key_changed(VCONFKEY_AIL_INFO_STATE, ail_info_cb);
+ if (ret < 0)
+ ErrPrint("Failed to ignore vconf key (%d)\n", ret);
+
return ret;
}