summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStephen 'Okra' Houston <smhouston88@gmail.com>2017-07-15 21:31:06 -0500
committerStephen 'Okra' Houston <smhouston88@gmail.com>2017-07-15 21:32:38 -0500
commit53707933992eee68e17a6101739aff2249390fd8 (patch)
treebf91cd3752d0b677dee0a840d2ed4481b7b7577a
parent139045c12023f8af289f769b1e609428319d023e (diff)
downloadenlightenment-53707933992eee68e17a6101739aff2249390fd8.tar.gz
Sysinfo Gadget: More thread vs object lifetime work: Make threads no longer dependent on the main loop objects and vice versa.
-rw-r--r--src/modules/sysinfo/batman/batman.c15
-rw-r--r--src/modules/sysinfo/batman/batman_config.c2
-rw-r--r--src/modules/sysinfo/batman/batman_fallback.c36
-rw-r--r--src/modules/sysinfo/batman/batman_sysctl.c14
-rw-r--r--src/modules/sysinfo/batman/batman_udev.c8
-rw-r--r--src/modules/sysinfo/batman/batman_upower.c8
-rw-r--r--src/modules/sysinfo/cpuclock/cpuclock.c131
-rw-r--r--src/modules/sysinfo/cpuclock/cpuclock_config.c2
-rw-r--r--src/modules/sysinfo/cpumonitor/cpumonitor.c131
-rw-r--r--src/modules/sysinfo/cpumonitor/cpumonitor.h4
-rw-r--r--src/modules/sysinfo/cpumonitor/cpumonitor_proc.c21
-rw-r--r--src/modules/sysinfo/cpumonitor/cpumonitor_sysctl.c54
-rw-r--r--src/modules/sysinfo/memusage/memusage.c81
-rw-r--r--src/modules/sysinfo/memusage/memusage_sysctl.c4
-rw-r--r--src/modules/sysinfo/mod.c28
-rw-r--r--src/modules/sysinfo/netstatus/netstatus.c175
-rw-r--r--src/modules/sysinfo/netstatus/netstatus.h8
-rw-r--r--src/modules/sysinfo/netstatus/netstatus_config.c2
-rw-r--r--src/modules/sysinfo/netstatus/netstatus_proc.c96
-rw-r--r--src/modules/sysinfo/netstatus/netstatus_sysctl.c90
-rw-r--r--src/modules/sysinfo/sysinfo.c35
-rw-r--r--src/modules/sysinfo/sysinfo.h27
-rw-r--r--src/modules/sysinfo/thermal/thermal.c60
-rw-r--r--src/modules/sysinfo/thermal/thermal_config.c2
-rw-r--r--src/modules/sysinfo/thermal/thermal_fallback.c8
25 files changed, 346 insertions, 696 deletions
diff --git a/src/modules/sysinfo/batman/batman.c b/src/modules/sysinfo/batman/batman.c
index 1af63702d2..79e06fa837 100644
--- a/src/modules/sysinfo/batman/batman.c
+++ b/src/modules/sysinfo/batman/batman.c
@@ -617,19 +617,6 @@ sysinfo_batman_remove(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNU
(void) inst;
_batman_fallback_stop();
#endif
- inst->cfg->batman.done = EINA_TRUE;
- if (inst->cfg->esm == E_SYSINFO_MODULE_SYSINFO)
- {
- if (inst->cfg->memusage.done && inst->cfg->thermal.done &&
- inst->cfg->netstatus.done && inst->cfg->cpuclock.done && inst->cfg->cpumonitor.done)
- {
- sysinfo_config->items = eina_list_remove(sysinfo_config->items, inst->cfg);
- if (inst->cfg->id >= 0)
- sysinfo_instances = eina_list_remove(sysinfo_instances, inst);
- E_FREE(inst->cfg);
- E_FREE(inst);
- }
- }
}
static void
@@ -678,7 +665,6 @@ sysinfo_batman_create(Evas_Object *parent, Instance *inst)
inst->cfg->batman.time_left = -2;
inst->cfg->batman.have_battery = -2;
inst->cfg->batman.have_power = -2;
- inst->cfg->batman.done = EINA_FALSE;
inst->cfg->batman.o_gadget = elm_layout_add(parent);
e_theme_edje_object_set(inst->cfg->batman.o_gadget, "base/theme/gadget/batman",
@@ -750,7 +736,6 @@ batman_create(Evas_Object *parent, int *id, E_Gadget_Site_Orient orient EINA_UNU
inst = E_NEW(Instance, 1);
inst->cfg = _conf_item_get(id);
*id = inst->cfg->id;
- inst->cfg->batman.done = EINA_FALSE;
inst->o_main = elm_box_add(parent);
E_EXPAND(inst->o_main);
evas_object_data_set(inst->o_main, "Instance", inst);
diff --git a/src/modules/sysinfo/batman/batman_config.c b/src/modules/sysinfo/batman/batman_config.c
index 5622c0af46..e08c346ad3 100644
--- a/src/modules/sysinfo/batman/batman_config.c
+++ b/src/modules/sysinfo/batman/batman_config.c
@@ -7,7 +7,7 @@ _config_close(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, voi
Instance *inst = bc->inst;
E_FREE_FUNC(inst->cfg->batman.configure, evas_object_del);
- E_FREE_FUNC(bc, free);
+ E_FREE(bc);
e_config_save_queue();
}
diff --git a/src/modules/sysinfo/batman/batman_fallback.c b/src/modules/sysinfo/batman/batman_fallback.c
index a04980a3cf..0b840e9c06 100644
--- a/src/modules/sysinfo/batman/batman_fallback.c
+++ b/src/modules/sysinfo/batman/batman_fallback.c
@@ -277,8 +277,8 @@ linux_sys_class_power_supply_cb_re_init(void *data)
// if (sysev->fd_handler)
// ecore_main_fd_handler_del(sysev->fd_handler);
// if (sysev->fd >= 0) close(sysev->fd);
- free(sysev->name);
- free(sysev);
+ E_FREE(sysev->name);
+ E_FREE(sysev);
}
}
linux_sys_class_power_supply_init();
@@ -319,8 +319,8 @@ linux_sys_class_power_supply_cb_event_fd_active(void *data,
// if (sysev->fd_handler)
// ecore_main_fd_handler_del(sysev->fd_handler);
// if (sysev->fd >= 0) close(sysev->fd);
- free(sysev->name);
- free(sysev);
+ E_FREE(sysev->name);
+ E_FREE(sysev);
if (re_init_timer) ecore_timer_del(re_init_timer);
re_init_timer = ecore_timer_loop_add(1.0, linux_sys_class_power_supply_cb_re_init, NULL);
@@ -476,7 +476,7 @@ linux_sys_class_power_supply_init(void)
if (!(linux_sys_class_power_supply_is_battery(name)))
{
- free(name);
+ E_FREE(name);
continue;
}
sysev = (Sys_Class_Power_Supply_Uevent *)calloc(1, sizeof(Sys_Class_Power_Supply_Uevent));
@@ -573,7 +573,7 @@ linux_sys_class_power_supply_check(void)
full = 1;
charging = 0;
}
- free(tmp);
+ E_FREE(tmp);
}
/* some batteries can/will/want to predict how long they will
* last. if so - take what the battery says. too bad if it's
@@ -825,7 +825,7 @@ linux_acpi_init(void)
if (tmp)
{
if (!strcmp(tmp, "on-line")) have_power = 1;
- free(tmp);
+ E_FREE(tmp);
}
fclose(f);
}
@@ -853,7 +853,7 @@ linux_acpi_init(void)
if (tmp)
{
if (!strcmp(tmp, "yes")) have_battery = 1;
- free(tmp);
+ E_FREE(tmp);
}
/* design cap */
tmp = fgets(buf, sizeof(buf), f);
@@ -861,7 +861,7 @@ linux_acpi_init(void)
if (tmp)
{
if (strcmp(tmp, "unknown")) acpi_max_design += atoi(tmp);
- free(tmp);
+ E_FREE(tmp);
}
/* last full cap */
tmp = fgets(buf, sizeof(buf), f);
@@ -869,7 +869,7 @@ linux_acpi_init(void)
if (tmp)
{
if (strcmp(tmp, "unknown")) acpi_max_full += atoi(tmp);
- free(tmp);
+ E_FREE(tmp);
}
fclose(f);
}
@@ -930,34 +930,34 @@ linux_acpi_check(void)
FILE *f;
snprintf(buf, sizeof(buf), "/proc/acpi/battery/%s/state", name);
- free(name);
+ E_FREE(name);
f = fopen(buf, "r");
if (!f) continue;
tmp = file_str_entry_get(f, "present:");
if (!tmp) goto fclose_and_continue;
if (!strcasecmp(tmp, "yes")) have_battery = 1;
- free(tmp);
+ E_FREE(tmp);
tmp = file_str_entry_get(f, "capacity state:");
if (!tmp) goto fclose_and_continue;
- free(tmp);
+ E_FREE(tmp);
tmp = file_str_entry_get(f, "charging state:");
if (!tmp) goto fclose_and_continue;
if ((have_power == 0) && (!strcasecmp(tmp, "charging")))
have_power = 1;
- free(tmp);
+ E_FREE(tmp);
tmp = file_str_entry_get(f, "present rate:");
if (!tmp) goto fclose_and_continue;
if (strcasecmp(tmp, "unknown")) rate += atoi(tmp);
- free(tmp);
+ E_FREE(tmp);
tmp = file_str_entry_get(f, "remaining capacity:");
if (!tmp) goto fclose_and_continue;
if (strcasecmp(tmp, "unknown")) capacity += atoi(tmp);
- free(tmp);
+ E_FREE(tmp);
fclose_and_continue:
fclose(f);
@@ -1182,7 +1182,7 @@ fclose_and_continue:
}
}
- free(name);
+ E_FREE(name);
}
if (max_charge > 0) battery_full = ((long long)charge * 100) / max_charge;
else battery_full = 0;
@@ -1251,7 +1251,7 @@ dir_has_contents(const char *dir)
count = eina_list_count(bats);
EINA_LIST_FREE(bats, file)
- free(file);
+ E_FREE(file);
if (count > 0) return 1;
return 0;
}
diff --git a/src/modules/sysinfo/batman/batman_sysctl.c b/src/modules/sysinfo/batman/batman_sysctl.c
index 82f5b343f0..cc8b90e85a 100644
--- a/src/modules/sysinfo/batman/batman_sysctl.c
+++ b/src/modules/sysinfo/batman/batman_sysctl.c
@@ -144,8 +144,8 @@ _batman_sysctl_stop(void)
EINA_LIST_FREE(batman_device_ac_adapters, ac)
{
E_FREE_FUNC(ac->udi, eina_stringshare_del);
- E_FREE_FUNC(ac->mib, free);
- E_FREE_FUNC(ac, free);
+ E_FREE(ac->mib);
+ E_FREE(ac);
}
EINA_LIST_FREE(batman_device_batteries, bat)
@@ -156,12 +156,12 @@ _batman_sysctl_stop(void)
E_FREE_FUNC(bat->vendor, eina_stringshare_del);
E_FREE_FUNC(bat->poll, ecore_poller_del);
#if defined(__FreeBSD__) || defined(__DragonFly__)
- E_FREE_FUNC(bat->mib_state, free);
- E_FREE_FUNC(bat->mib_time, free);
- E_FREE_FUNC(bat->mib_units, free);
+ E_FREE(bat->mib_state);
+ E_FREE(bat->mib_time);
+ E_FREE(bat->mib_units);
#endif
- E_FREE_FUNC(bat->mib, free);
- E_FREE_FUNC(bat, free);
+ E_FREE(bat->mib);
+ E_FREE(bat);
}
}
diff --git a/src/modules/sysinfo/batman/batman_udev.c b/src/modules/sysinfo/batman/batman_udev.c
index 6699d0e5ff..18314f3286 100644
--- a/src/modules/sysinfo/batman/batman_udev.c
+++ b/src/modules/sysinfo/batman/batman_udev.c
@@ -50,7 +50,7 @@ _batman_udev_stop(Instance *inst)
EINA_LIST_FREE(batman_device_ac_adapters, ac)
{
- E_FREE_FUNC(ac, free);
+ E_FREE(ac);
}
EINA_LIST_FREE(batman_device_batteries, bat)
{
@@ -59,7 +59,7 @@ _batman_udev_stop(Instance *inst)
eina_stringshare_del(bat->model);
eina_stringshare_del(bat->vendor);
E_FREE_FUNC(bat->poll, ecore_poller_del);
- E_FREE_FUNC(bat, free);
+ E_FREE(bat);
}
}
@@ -190,7 +190,7 @@ _batman_udev_battery_del(const char *syspath, Instance *inst)
eina_stringshare_del(bat->model);
eina_stringshare_del(bat->vendor);
E_FREE_FUNC(bat->poll, ecore_poller_del);
- E_FREE_FUNC(bat, free);
+ E_FREE(bat);
}
}
eina_stringshare_del(syspath);
@@ -214,7 +214,7 @@ _batman_udev_ac_del(const char *syspath, Instance *inst)
{
batman_device_ac_adapters = eina_list_remove_list(batman_device_ac_adapters, l);
eina_stringshare_del(ac->udi);
- E_FREE_FUNC(ac, free);
+ E_FREE(ac);
}
}
eina_stringshare_del(syspath);
diff --git a/src/modules/sysinfo/batman/batman_upower.c b/src/modules/sysinfo/batman/batman_upower.c
index c86b335e70..b59360f303 100644
--- a/src/modules/sysinfo/batman/batman_upower.c
+++ b/src/modules/sysinfo/batman/batman_upower.c
@@ -31,7 +31,7 @@ _battery_free(Battery *bat)
eina_stringshare_del(bat->model);
if (bat->vendor)
eina_stringshare_del(bat->vendor);
- free(bat);
+ E_FREE(bat);
}
static void
@@ -43,7 +43,7 @@ _ac_free(Ac_Adapter *ac)
batman_device_ac_adapters = eina_list_remove(batman_device_ac_adapters, ac);
eina_stringshare_del(ac->udi);
- free(ac);
+ E_FREE(ac);
}
static void
@@ -244,7 +244,7 @@ _device_type_cb(void *data, const Eldbus_Message *msg, Eldbus_Pending *pending E
else
goto error;
- free(ud);
+ E_FREE(ud);
return;
@@ -252,7 +252,7 @@ error:
obj = eldbus_proxy_object_get(ud->proxy);
eldbus_proxy_unref(ud->proxy);
eldbus_object_unref(obj);
- free(ud);
+ E_FREE(ud);
return;
}
diff --git a/src/modules/sysinfo/cpuclock/cpuclock.c b/src/modules/sysinfo/cpuclock/cpuclock.c
index 35dc7892cd..013712ec25 100644
--- a/src/modules/sysinfo/cpuclock/cpuclock.c
+++ b/src/modules/sysinfo/cpuclock/cpuclock.c
@@ -44,16 +44,16 @@ _cpuclock_status_free(Cpu_Status *s)
{
Eina_List *l;
- if (s->frequencies) eina_list_free(s->frequencies);
+ if (eina_list_count(s->frequencies)) eina_list_free(s->frequencies);
if (s->governors)
{
for (l = s->governors; l; l = l->next)
- E_FREE_FUNC(l->data, free);
+ E_FREE(l->data);
eina_list_free(s->governors);
}
- E_FREE_FUNC(s->cur_governor, free);
+ E_FREE(s->cur_governor);
if (s->orig_governor) eina_stringshare_del(s->orig_governor);
- E_FREE_FUNC(s, free);
+ E_FREE(s);
}
static int
@@ -370,7 +370,7 @@ _cpuclock_config_updated(Instance *inst)
for (l = inst->cfg->cpuclock.status->frequencies, i = 0; l; l = l->next, i++)
frequency_msg->val[i] = (long)l->data;
edje_object_message_send(elm_layout_edje_get(inst->cfg->cpuclock.o_gadget), EDJE_MESSAGE_INT_SET, 1, frequency_msg);
- free(frequency_msg);
+ E_FREE(frequency_msg);
}
if (inst->cfg->cpuclock.status->governors)
@@ -381,7 +381,7 @@ _cpuclock_config_updated(Instance *inst)
for (l = inst->cfg->cpuclock.status->governors, i = 0; l; l = l->next, i++)
governor_msg->str[i] = (char *)l->data;
edje_object_message_send(elm_layout_edje_get(inst->cfg->cpuclock.o_gadget), EDJE_MESSAGE_STRING_SET, 2, governor_msg);
- free(governor_msg);
+ E_FREE(governor_msg);
}
_cpuclock_poll_interval_update(inst);
}
@@ -402,7 +402,7 @@ _cpuclock_face_update_current(Instance *inst)
frequency_msg->val[4] = 0; // pad
edje_object_message_send(elm_layout_edje_get(inst->cfg->cpuclock.o_gadget), EDJE_MESSAGE_INT_SET, 3,
frequency_msg);
- free(frequency_msg);
+ E_FREE(frequency_msg);
/* BSD crashes here without the if-condition
* since it has no governors (yet) */
@@ -499,7 +499,7 @@ _cpuclock_status_check_available(Cpu_Status *s)
if (s->governors)
{
for (l = s->governors; l; l = l->next)
- free(l->data);
+ E_FREE(l->data);
eina_list_free(s->governors);
s->governors = NULL;
}
@@ -586,7 +586,7 @@ _cpuclock_status_check_available(Cpu_Status *s)
if (s->governors)
{
for (l = s->governors; l; l = l->next)
- free(l->data);
+ E_FREE(l->data);
eina_list_free(s->governors);
s->governors = NULL;
}
@@ -749,7 +749,7 @@ _cpuclock_status_check_current(Cpu_Status *s)
{
ret = 1;
- free(s->cur_governor);
+ E_FREE(s->cur_governor);
s->cur_governor = strdup(buf);
for (i = strlen(s->cur_governor) - 1; i >= 0; i--)
@@ -845,37 +845,36 @@ _cpuclock_cb_frequency_check_notify(void *data,
Eina_Bool freq_changed = EINA_FALSE;
Eina_Bool init_set = EINA_FALSE;
Thread_Config *thc = data;
- Instance *inst = thc->inst;
- if (!inst->cfg) return;
- if (inst->cfg->esm != E_SYSINFO_MODULE_CPUCLOCK && inst->cfg->esm != E_SYSINFO_MODULE_SYSINFO) return;
+ if (!thc->inst && !thc->inst->cfg) return;
+ if (thc->inst->cfg->esm != E_SYSINFO_MODULE_CPUCLOCK && thc->inst->cfg->esm != E_SYSINFO_MODULE_SYSINFO) return;
- if ((inst->cfg->cpuclock.status) && (status) &&
+ if ((thc->inst->cfg->cpuclock.status) && (status) &&
(
#if defined(__OpenBSD__)
- (status->cur_percent != inst->cfg->cpuclock.status->cur_percent ) ||
+ (status->cur_percent != thc->inst->cfg->cpuclock.status->cur_percent ) ||
#endif
- (status->cur_frequency != inst->cfg->cpuclock.status->cur_frequency ) ||
- (status->cur_min_frequency != inst->cfg->cpuclock.status->cur_min_frequency) ||
- (status->cur_max_frequency != inst->cfg->cpuclock.status->cur_max_frequency) ||
- (status->can_set_frequency != inst->cfg->cpuclock.status->can_set_frequency)))
+ (status->cur_frequency != thc->inst->cfg->cpuclock.status->cur_frequency ) ||
+ (status->cur_min_frequency != thc->inst->cfg->cpuclock.status->cur_min_frequency) ||
+ (status->cur_max_frequency != thc->inst->cfg->cpuclock.status->cur_max_frequency) ||
+ (status->can_set_frequency != thc->inst->cfg->cpuclock.status->can_set_frequency)))
freq_changed = EINA_TRUE;
- E_FREE_FUNC(inst->cfg->cpuclock.status, _cpuclock_status_free);
- inst->cfg->cpuclock.status = status;
+ E_FREE_FUNC(thc->inst->cfg->cpuclock.status, _cpuclock_status_free);
+ thc->inst->cfg->cpuclock.status = status;
if (freq_changed)
{
- _cpuclock_face_update_current(inst);
+ _cpuclock_face_update_current(thc->inst);
}
- if (inst->cfg->cpuclock.status->active == 0)
- elm_layout_signal_emit(inst->cfg->cpuclock.o_gadget, "e,state,disabled", "e");
- else if (inst->cfg->cpuclock.status->active == 1)
- elm_layout_signal_emit(inst->cfg->cpuclock.o_gadget, "e,state,enabled", "e");
+ if (thc->inst->cfg->cpuclock.status->active == 0)
+ elm_layout_signal_emit(thc->inst->cfg->cpuclock.o_gadget, "e,state,disabled", "e");
+ else if (thc->inst->cfg->cpuclock.status->active == 1)
+ elm_layout_signal_emit(thc->inst->cfg->cpuclock.o_gadget, "e,state,enabled", "e");
if (!init_set)
{
- _cpuclock_set_pstate(inst->cfg->cpuclock.pstate_min - 1,
- inst->cfg->cpuclock.pstate_max - 1,
- inst->cfg->cpuclock.status->pstate_turbo);
+ _cpuclock_set_pstate(thc->inst->cfg->cpuclock.pstate_min - 1,
+ thc->inst->cfg->cpuclock.pstate_max - 1,
+ thc->inst->cfg->cpuclock.status->pstate_turbo);
init_set = EINA_TRUE;
}
}
@@ -884,38 +883,9 @@ static void
_cpuclock_cb_frequency_check_end(void *data, Ecore_Thread *th EINA_UNUSED)
{
Thread_Config *thc = data;
+
e_powersave_sleeper_free(thc->sleeper);
- if (thc->inst->cfg->cpuclock.defer)
- {
- if (thc->inst->cfg->cpuclock.handler)
- ecore_event_handler_del(thc->inst->cfg->cpuclock.handler);
- if (thc->inst->cfg->cpuclock.governor)
- eina_stringshare_del(thc->inst->cfg->cpuclock.governor);
- E_FREE_FUNC(thc->inst->cfg->cpuclock.status, _cpuclock_status_free);
- thc->inst->cfg->cpuclock.defer = EINA_FALSE;
- thc->inst->cfg->cpuclock.done = EINA_TRUE;
- if (thc->inst->cfg->esm == E_SYSINFO_MODULE_CPUCLOCK)
- {
- sysinfo_config->items = eina_list_remove(sysinfo_config->items, thc->inst->cfg);
- if (thc->inst->cfg->id >= 0)
- sysinfo_instances = eina_list_remove(sysinfo_instances, thc->inst);
- E_FREE(thc->inst->cfg);
- E_FREE(thc->inst);
- }
- else
- {
- if (thc->inst->cfg->memusage.done && thc->inst->cfg->thermal.done &&
- thc->inst->cfg->netstatus.done && thc->inst->cfg->cpumonitor.done && thc->inst->cfg->batman.done)
- {
- sysinfo_config->items = eina_list_remove(sysinfo_config->items, thc->inst->cfg);
- if (thc->inst->cfg->id >= 0)
- sysinfo_instances = eina_list_remove(sysinfo_instances, thc->inst);
- E_FREE(thc->inst->cfg);
- E_FREE(thc->inst);
- }
- }
- }
- E_FREE_FUNC(thc, free);
+ E_FREE(thc);
}
EINTERN void
@@ -987,13 +957,10 @@ _cpuclock_removed_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_data)
_cpuclock_removed_cb, inst);
if (inst->cfg->cpuclock.frequency_check_thread)
{
- inst->cfg->cpuclock.defer = EINA_TRUE;
ecore_thread_cancel(inst->cfg->cpuclock.frequency_check_thread);
inst->cfg->cpuclock.frequency_check_thread = NULL;
return;
}
- if (inst->cfg->cpuclock.handler)
- ecore_event_handler_del(inst->cfg->cpuclock.handler);
if (inst->cfg->cpuclock.governor)
eina_stringshare_del(inst->cfg->cpuclock.governor);
E_FREE_FUNC(inst->cfg->cpuclock.status, _cpuclock_status_free);
@@ -1021,31 +988,13 @@ sysinfo_cpuclock_remove(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_U
ecore_event_handler_del(handler);
if (inst->cfg->cpuclock.frequency_check_thread)
{
- inst->cfg->cpuclock.defer = EINA_TRUE;
ecore_thread_cancel(inst->cfg->cpuclock.frequency_check_thread);
inst->cfg->cpuclock.frequency_check_thread = NULL;
- return;
}
-
- if (inst->cfg->cpuclock.handler)
- ecore_event_handler_del(inst->cfg->cpuclock.handler);
if (inst->cfg->cpuclock.governor)
eina_stringshare_del(inst->cfg->cpuclock.governor);
E_FREE_FUNC(inst->cfg->cpuclock.status, _cpuclock_status_free);
- inst->cfg->cpuclock.done = EINA_TRUE;
- if (inst->cfg->esm == E_SYSINFO_MODULE_SYSINFO)
- {
- if (inst->cfg->memusage.done && inst->cfg->thermal.done &&
- inst->cfg->netstatus.done && inst->cfg->cpumonitor.done && inst->cfg->batman.done)
- {
- sysinfo_config->items = eina_list_remove(sysinfo_config->items, inst->cfg);
- if (inst->cfg->id >= 0)
- sysinfo_instances = eina_list_remove(sysinfo_instances, inst);
- E_FREE(inst->cfg);
- E_FREE(inst);
- }
- }
}
static void
@@ -1084,13 +1033,13 @@ _cpuclock_created_cb(void *data, Evas_Object *obj, void *event_data EINA_UNUSED)
evas_object_show(inst->cfg->cpuclock.o_gadget);
evas_object_smart_callback_del_full(obj, "gadget_created", _cpuclock_created_cb, data);
+ inst->cfg->cpuclock.status = _cpuclock_status_new();
+ _cpuclock_status_check_available(inst->cfg->cpuclock.status);
+
E_LIST_HANDLER_APPEND(inst->cfg->cpuclock.handlers, E_EVENT_SCREENSAVER_ON, _screensaver_on, inst);
E_LIST_HANDLER_APPEND(inst->cfg->cpuclock.handlers, E_EVENT_SCREENSAVER_OFF, _screensaver_off, inst);
+ E_LIST_HANDLER_APPEND(inst->cfg->cpuclock.handlers, E_EVENT_POWERSAVE_UPDATE, _cpuclock_event_cb_powersave, inst);
- inst->cfg->cpuclock.status = _cpuclock_status_new();
- _cpuclock_status_check_available(inst->cfg->cpuclock.status);
- inst->cfg->cpuclock.handler = ecore_event_handler_add(E_EVENT_POWERSAVE_UPDATE,
- _cpuclock_event_cb_powersave, inst);
_cpuclock_config_updated(inst);
if ((inst->cfg->cpuclock.restore_governor) && (inst->cfg->cpuclock.governor))
{
@@ -1110,8 +1059,6 @@ sysinfo_cpuclock_create(Evas_Object *parent, Instance *inst)
{
Eina_List *l = NULL;
- inst->cfg->cpuclock.defer = EINA_FALSE;
- inst->cfg->cpuclock.done = EINA_FALSE;
if (inst->cfg->cpuclock.pstate_min == 0) inst->cfg->cpuclock.pstate_min = 1;
if (inst->cfg->cpuclock.pstate_max == 0) inst->cfg->cpuclock.pstate_max = 101;
@@ -1132,13 +1079,13 @@ sysinfo_cpuclock_create(Evas_Object *parent, Instance *inst)
evas_object_event_callback_add(inst->cfg->cpuclock.o_gadget, EVAS_CALLBACK_RESIZE, _cpuclock_resize_cb, inst);
evas_object_show(inst->cfg->cpuclock.o_gadget);
+ inst->cfg->cpuclock.status = _cpuclock_status_new();
+ _cpuclock_status_check_available(inst->cfg->cpuclock.status);
+
E_LIST_HANDLER_APPEND(inst->cfg->cpuclock.handlers, E_EVENT_SCREENSAVER_ON, _screensaver_on, inst);
E_LIST_HANDLER_APPEND(inst->cfg->cpuclock.handlers, E_EVENT_SCREENSAVER_OFF, _screensaver_off, inst);
+ E_LIST_HANDLER_APPEND(inst->cfg->cpuclock.handlers, E_EVENT_POWERSAVE_UPDATE, _cpuclock_event_cb_powersave, inst);
- inst->cfg->cpuclock.status = _cpuclock_status_new();
- _cpuclock_status_check_available(inst->cfg->cpuclock.status);
- inst->cfg->cpuclock.handler = ecore_event_handler_add(E_EVENT_POWERSAVE_UPDATE,
- _cpuclock_event_cb_powersave, inst);
_cpuclock_config_updated(inst);
if ((inst->cfg->cpuclock.restore_governor) && (inst->cfg->cpuclock.governor))
{
@@ -1197,8 +1144,6 @@ cpuclock_create(Evas_Object *parent, int *id, E_Gadget_Site_Orient orient EINA_U
inst = E_NEW(Instance, 1);
inst->cfg = _conf_item_get(id);
*id = inst->cfg->id;
- inst->cfg->cpuclock.defer = EINA_FALSE;
- inst->cfg->cpuclock.done = EINA_FALSE;
inst->o_main = elm_box_add(parent);
E_EXPAND(inst->o_main);
evas_object_data_set(inst->o_main, "Instance", inst);
diff --git a/src/modules/sysinfo/cpuclock/cpuclock_config.c b/src/modules/sysinfo/cpuclock/cpuclock_config.c
index 1872825009..7efb63707f 100644
--- a/src/modules/sysinfo/cpuclock/cpuclock_config.c
+++ b/src/modules/sysinfo/cpuclock/cpuclock_config.c
@@ -8,7 +8,7 @@ _config_close(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, voi
E_FREE_FUNC(inst->cfg->cpuclock.configure, evas_object_del);
E_FREE_FUNC(cc->powersaves, eina_list_free);
- E_FREE_FUNC(cc, free);
+ E_FREE(cc);
e_config_save_queue();
}
diff --git a/src/modules/sysinfo/cpumonitor/cpumonitor.c b/src/modules/sysinfo/cpumonitor/cpumonitor.c
index cfb2af60d1..84488033b3 100644
--- a/src/modules/sysinfo/cpumonitor/cpumonitor.c
+++ b/src/modules/sysinfo/cpumonitor/cpumonitor.c
@@ -5,18 +5,22 @@ typedef struct _Thread_Config Thread_Config;
struct _Thread_Config
{
int interval;
- int cores;
+ int num_cores;
+ int percent;
+ unsigned long total;
+ unsigned long idle;
Instance *inst;
E_Powersave_Sleeper *sleeper;
+ Eina_List *cores;
};
static void
-_cpumonitor_face_update(Instance *inst)
+_cpumonitor_face_update(Thread_Config *thc)
{
Eina_List *l;
CPU_Core *core;
- EINA_LIST_FOREACH(inst->cfg->cpumonitor.cores, l, core)
+ EINA_LIST_FOREACH(thc->cores, l, core)
{
Edje_Message_Int_Set *usage_msg;
usage_msg = malloc(sizeof(Edje_Message_Int_Set) + 1 * sizeof(int));
@@ -25,12 +29,12 @@ _cpumonitor_face_update(Instance *inst)
usage_msg->val[0] = core->percent;
edje_object_message_send(elm_layout_edje_get(core->layout), EDJE_MESSAGE_INT_SET, 1,
usage_msg);
- free(usage_msg);
+ E_FREE(usage_msg);
}
- if (inst->cfg->cpumonitor.popup)
+ if (thc->inst->cfg->cpumonitor.popup)
{
- elm_progressbar_value_set(inst->cfg->cpumonitor.popup_pbar,
- (float)inst->cfg->cpumonitor.percent / 100);
+ elm_progressbar_value_set(thc->inst->cfg->cpumonitor.popup_pbar,
+ (float)thc->percent / 100);
}
}
@@ -123,7 +127,7 @@ _cpumonitor_resize_cb(void *data, Evas *e EINA_UNUSED, Evas_Object *obj, void *e
{
Evas_Coord w = 1, h = 1, sw, sh;
Instance *inst = data;
- int num_cores = eina_list_count(inst->cfg->cpumonitor.cores);
+ int num_cores = inst->cfg->cpumonitor.cores;
if (!num_cores || !inst->o_main) return;
@@ -164,9 +168,9 @@ _cpumonitor_cb_usage_check_main(void *data, Ecore_Thread *th)
{
if (ecore_thread_check(th)) break;
#if defined(__FreeBSD__) || defined(__DragonFly__) || defined(__OpenBSD__)
- _cpumonitor_sysctl_getusage(thc->inst);
+ _cpumonitor_sysctl_getusage(&thc->total, &thc->idle, &thc->percent, thc->cores);
#else
- _cpumonitor_proc_getusage(thc->inst);
+ _cpumonitor_proc_getusage(&thc->total, &thc->idle, &thc->percent, thc->cores);
#endif
ecore_thread_feedback(th, NULL);
if (ecore_thread_check(th)) break;
@@ -185,12 +189,11 @@ _cpumonitor_cb_usage_check_notify(void *data,
void *msg EINA_UNUSED)
{
Thread_Config *thc = data;
- Instance *inst = thc->inst;
-
- if (!inst->cfg) return;
- if (inst->cfg->esm != E_SYSINFO_MODULE_CPUMONITOR && inst->cfg->esm != E_SYSINFO_MODULE_SYSINFO) return;
- _cpumonitor_face_update(inst);
+ if (!thc->inst || !thc->inst->cfg) return;
+ if (thc->inst->cfg->esm != E_SYSINFO_MODULE_CPUMONITOR && thc->inst->cfg->esm != E_SYSINFO_MODULE_SYSINFO) return;
+ thc->inst->cfg->cpumonitor.percent = thc->percent;
+ _cpumonitor_face_update(thc);
}
static void
@@ -200,37 +203,12 @@ _cpumonitor_cb_usage_check_end(void *data, Ecore_Thread *th EINA_UNUSED)
CPU_Core *core;
e_powersave_sleeper_free(thc->sleeper);
- if (thc->inst->cfg->cpumonitor.defer)
+ EINA_LIST_FREE(thc->cores, core)
{
- EINA_LIST_FREE(thc->inst->cfg->cpumonitor.cores, core)
- {
- evas_object_del(core->layout);
- E_FREE_FUNC(core, free);
- }
- thc->inst->cfg->cpumonitor.defer = EINA_FALSE;
- thc->inst->cfg->cpumonitor.done = EINA_TRUE;
- if (thc->inst->cfg->esm == E_SYSINFO_MODULE_CPUMONITOR)
- {
- sysinfo_config->items = eina_list_remove(sysinfo_config->items, thc->inst->cfg);
- if (thc->inst->cfg->id >= 0)
- sysinfo_instances = eina_list_remove(sysinfo_instances, thc->inst);
- E_FREE(thc->inst->cfg);
- E_FREE(thc->inst);
- }
- else
- {
- if (thc->inst->cfg->memusage.done && thc->inst->cfg->thermal.done &&
- thc->inst->cfg->netstatus.done && thc->inst->cfg->cpuclock.done && thc->inst->cfg->batman.done)
- {
- sysinfo_config->items = eina_list_remove(sysinfo_config->items, thc->inst->cfg);
- if (thc->inst->cfg->id >= 0)
- sysinfo_instances = eina_list_remove(sysinfo_instances, thc->inst);
- E_FREE(thc->inst->cfg);
- E_FREE(thc->inst);
- }
- }
+ evas_object_del(core->layout);
+ E_FREE(core);
}
- E_FREE_FUNC(thc, free);
+ E_FREE(thc);
}
Evas_Object *
@@ -259,15 +237,9 @@ static Eina_Bool
_screensaver_on(void *data)
{
Instance *inst = data;
- CPU_Core *core;
if (inst->cfg->cpumonitor.usage_check_thread)
{
- EINA_LIST_FREE(inst->cfg->cpumonitor.cores, core)
- {
- evas_object_del(core->layout);
- E_FREE_FUNC(core, free);
- }
ecore_thread_cancel(inst->cfg->cpumonitor.usage_check_thread);
inst->cfg->cpumonitor.usage_check_thread = NULL;
}
@@ -293,11 +265,6 @@ _cpumonitor_config_updated(Instance *inst)
if (inst->cfg->cpumonitor.usage_check_thread)
{
- EINA_LIST_FREE(inst->cfg->cpumonitor.cores, core)
- {
- evas_object_del(core->layout);
- E_FREE_FUNC(core, free);
- }
ecore_thread_cancel(inst->cfg->cpumonitor.usage_check_thread);
inst->cfg->cpumonitor.usage_check_thread = NULL;
}
@@ -305,14 +272,17 @@ _cpumonitor_config_updated(Instance *inst)
if (thc)
{
thc->inst = inst;
+ thc->total = 0;
+ thc->idle = 0;
+ thc->percent = 0;
thc->interval = inst->cfg->cpumonitor.poll_interval;
thc->sleeper = e_powersave_sleeper_new();
#if defined(__FreeBSD__) || defined(__DragonFly__) || defined(__OpenBSD__)
- thc->cores = _cpumonitor_sysctl_getcores();
+ thc->num_cores = _cpumonitor_sysctl_getcores();
#else
- thc->cores = _cpumonitor_proc_getcores();
+ thc->num_cores = _cpumonitor_proc_getcores();
#endif
- for (i = 0; i < thc->cores; i++)
+ for (i = 0; i < thc->num_cores; i++)
{
core = E_NEW(CPU_Core, 1);
core->layout = _cpumonitor_add_layout(inst);
@@ -321,7 +291,7 @@ _cpumonitor_config_updated(Instance *inst)
core->percent = 0;
core->total = 0;
core->idle = 0;
- inst->cfg->cpumonitor.cores = eina_list_append(inst->cfg->cpumonitor.cores, core);
+ thc->cores = eina_list_append(thc->cores, core);
}
inst->cfg->cpumonitor.usage_check_thread =
ecore_thread_feedback_run(_cpumonitor_cb_usage_check_main,
@@ -336,7 +306,6 @@ static void
_cpumonitor_removed_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_data)
{
Instance *inst = data;
- CPU_Core *core;
Ecore_Event_Handler *handler;
if (inst->o_main != event_data) return;
@@ -347,23 +316,14 @@ _cpumonitor_removed_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_dat
E_FREE_FUNC(inst->cfg->cpumonitor.configure, evas_object_del);
EINA_LIST_FREE(inst->cfg->cpumonitor.handlers, handler)
ecore_event_handler_del(handler);
- EINA_LIST_FREE(inst->cfg->cpumonitor.cores, core)
evas_object_smart_callback_del_full(e_gadget_site_get(inst->o_main), "gadget_removed",
_cpumonitor_removed_cb, inst);
evas_object_event_callback_del_full(inst->o_main, EVAS_CALLBACK_DEL, sysinfo_cpumonitor_remove, data);
if (inst->cfg->cpumonitor.usage_check_thread)
{
- inst->cfg->cpumonitor.defer = EINA_TRUE;
ecore_thread_cancel(inst->cfg->cpumonitor.usage_check_thread);
inst->cfg->cpumonitor.usage_check_thread = NULL;
- return;
- }
- EINA_LIST_FREE(inst->cfg->cpumonitor.cores, core)
- {
- evas_object_del(core->layout);
- E_FREE_FUNC(core, free);
}
-
sysinfo_config->items = eina_list_remove(sysinfo_config->items, inst->cfg);
if (inst->cfg->id >= 0)
sysinfo_instances = eina_list_remove(sysinfo_instances, inst);
@@ -375,7 +335,6 @@ void
sysinfo_cpumonitor_remove(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_data EINA_UNUSED)
{
Instance *inst = data;
- CPU_Core *core;
Ecore_Event_Handler *handler;
if (inst->cfg->cpumonitor.popup)
@@ -386,28 +345,8 @@ sysinfo_cpumonitor_remove(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA
ecore_event_handler_del(handler);
if (inst->cfg->cpumonitor.usage_check_thread)
{
- inst->cfg->cpumonitor.defer = EINA_TRUE;
ecore_thread_cancel(inst->cfg->cpumonitor.usage_check_thread);
inst->cfg->cpumonitor.usage_check_thread = NULL;
- return;
- }
- EINA_LIST_FREE(inst->cfg->cpumonitor.cores, core)
- {
- evas_object_del(core->layout);
- E_FREE_FUNC(core, free);
- }
- inst->cfg->cpumonitor.done = EINA_TRUE;
- if (inst->cfg->esm == E_SYSINFO_MODULE_SYSINFO)
- {
- if (inst->cfg->memusage.done && inst->cfg->thermal.done &&
- inst->cfg->netstatus.done && inst->cfg->cpuclock.done && inst->cfg->batman.done)
- {
- sysinfo_config->items = eina_list_remove(sysinfo_config->items, inst->cfg);
- if (inst->cfg->id >= 0)
- sysinfo_instances = eina_list_remove(sysinfo_instances, inst);
- E_FREE(inst->cfg);
- E_FREE(inst);
- }
}
}
@@ -455,10 +394,6 @@ _cpumonitor_created_cb(void *data, Evas_Object *obj, void *event_data EINA_UNUSE
Evas_Object *
sysinfo_cpumonitor_create(Evas_Object *parent, Instance *inst)
{
- inst->cfg->cpumonitor.defer = EINA_FALSE;
- inst->cfg->cpumonitor.done = EINA_FALSE;
- inst->cfg->cpumonitor.total = 0;
- inst->cfg->cpumonitor.idle = 0;
inst->cfg->cpumonitor.percent = 0;
inst->cfg->cpumonitor.popup = NULL;
inst->cfg->cpumonitor.configure = NULL;
@@ -514,9 +449,6 @@ _conf_item_get(int *id)
ci->esm = E_SYSINFO_MODULE_CPUMONITOR;
ci->cpumonitor.poll_interval = 32;
- ci->cpumonitor.total = 0;
- ci->cpumonitor.percent = 0;
- ci->cpumonitor.idle = 0;
ci->cpumonitor.popup = NULL;
ci->cpumonitor.configure = NULL;
sysinfo_config->items = eina_list_append(sysinfo_config->items, ci);
@@ -532,11 +464,6 @@ cpumonitor_create(Evas_Object *parent, int *id, E_Gadget_Site_Orient orient EINA
inst = E_NEW(Instance, 1);
inst->cfg = _conf_item_get(id);
*id = inst->cfg->id;
- inst->cfg->cpumonitor.defer = EINA_FALSE;
- inst->cfg->cpumonitor.done = EINA_FALSE;
- inst->cfg->cpumonitor.total = 0;
- inst->cfg->cpumonitor.idle = 0;
- inst->cfg->cpumonitor.percent = 0;
inst->cfg->cpumonitor.popup = NULL;
inst->cfg->cpumonitor.configure = NULL;
inst->o_main = elm_box_add(parent);
diff --git a/src/modules/sysinfo/cpumonitor/cpumonitor.h b/src/modules/sysinfo/cpumonitor/cpumonitor.h
index e25b5be3a3..113d0fcb45 100644
--- a/src/modules/sysinfo/cpumonitor/cpumonitor.h
+++ b/src/modules/sysinfo/cpumonitor/cpumonitor.h
@@ -5,8 +5,8 @@
EINTERN void _cpumonitor_config_updated(Instance *inst);
EINTERN int _cpumonitor_proc_getcores(void);
-EINTERN void _cpumonitor_proc_getusage(Instance *inst);
-EINTERN int _cpumonitor_sysctl_getcores(void);
+EINTERN void _cpumonitor_proc_getusage(unsigned long *prev_total, unsigned long *prev_idle, int *prev_precent, Eina_List *cores);
+EINTERN int _cpumonitor_sysctl_getcores(unsigned long *prev_total, unsigned long *prev_idle, int *prev_precent, Eina_List *cores);
EINTERN void _cpumonitor_sysctl_getusage(Instance *inst);
EINTERN Evas_Object *cpumonitor_configure(Instance *inst);
#endif
diff --git a/src/modules/sysinfo/cpumonitor/cpumonitor_proc.c b/src/modules/sysinfo/cpumonitor/cpumonitor_proc.c
index 7428af59e7..2cfb452374 100644
--- a/src/modules/sysinfo/cpumonitor/cpumonitor_proc.c
+++ b/src/modules/sysinfo/cpumonitor/cpumonitor_proc.c
@@ -28,7 +28,10 @@ _cpumonitor_proc_getcores(void)
}
void
-_cpumonitor_proc_getusage(Instance *inst)
+_cpumonitor_proc_getusage(unsigned long *prev_total,
+ unsigned long *prev_idle,
+ int *prev_percent,
+ Eina_List *cores)
{
int k = 0, j = 0;
char buf[4096];
@@ -42,7 +45,7 @@ _cpumonitor_proc_getusage(Instance *inst)
{
if (k == 0)
{
- long total = 0, idle = 0, use = 0, total_change = 0, idle_change = 0;
+ unsigned long total = 0, idle = 0, use = 0, total_change = 0, idle_change = 0;
int percent = 0;
char *line, *tok;
int i = 0;
@@ -58,19 +61,19 @@ _cpumonitor_proc_getusage(Instance *inst)
idle = use;
tok = strtok(NULL, " ");
}
- total_change = total - inst->cfg->cpumonitor.total;
- idle_change = idle - inst->cfg->cpumonitor.idle;
+ total_change = total - *prev_total;
+ idle_change = idle - *prev_idle;
if (total_change != 0)
percent = 100 * (1 - ((float)idle_change / (float)total_change));
if (percent > 100) percent = 100;
else if (percent < 0) percent = 0;
- inst->cfg->cpumonitor.total = total;
- inst->cfg->cpumonitor.idle = idle;
- inst->cfg->cpumonitor.percent = percent;
+ *prev_total = total;
+ *prev_idle = idle;
+ *prev_percent = percent;
}
if (k > 0)
{
- long total = 0, idle = 0, use = 0, total_change = 0, idle_change = 0;
+ unsigned long total = 0, idle = 0, use = 0, total_change = 0, idle_change = 0;
int percent = 0;
if (!strncmp(buf, "cpu", 3))
{
@@ -89,7 +92,7 @@ _cpumonitor_proc_getusage(Instance *inst)
}
}
else break;
- core = eina_list_nth(inst->cfg->cpumonitor.cores, j);
+ core = eina_list_nth(cores, j);
total_change = total - core->total;
idle_change = idle - core->idle;
if (total_change != 0)
diff --git a/src/modules/sysinfo/cpumonitor/cpumonitor_sysctl.c b/src/modules/sysinfo/cpumonitor/cpumonitor_sysctl.c
index 55ffd39b02..319a9b0d56 100644
--- a/src/modules/sysinfo/cpumonitor/cpumonitor_sysctl.c
+++ b/src/modules/sysinfo/cpumonitor/cpumonitor_sysctl.c
@@ -27,7 +27,7 @@ _cpumonitor_sysctl_getcores(void)
void
-_cpumonitor_sysctl_getusage(Instance *inst)
+_cpumonitor_sysctl_getusage(unsigned long *prev_total, unsigned long *prev_idle, int *prev_precent, Eina_List *cores)
{
CPU_Core *core;
size_t size;
@@ -36,21 +36,21 @@ _cpumonitor_sysctl_getusage(Instance *inst)
#if defined(__FreeBSD__) || defined(__DragonFly__)
int ncpu = _cpumonitor_sysctl_getcores();
if (!ncpu) return;
- size = sizeof(long) * (CPU_STATES * ncpu);
- long cpu_times[ncpu][CPU_STATES];
+ size = sizeof(unsigned long) * (CPU_STATES * ncpu);
+ unsigned long cpu_times[ncpu][CPU_STATES];
if (sysctlbyname("kern.cp_times", cpu_times, &size, NULL, 0) < 0)
return;
for (i = 0; i < ncpu; i++)
{
- long *cpu = cpu_times[i];
+ unsigned long *cpu = cpu_times[i];
double total = 0;
for (j = 0; j < CPU_STATES; j++)
total += cpu[j];
- core = eina_list_nth(inst->cfg->cpumonitor.cores, i);
+ core = eina_list_nth(cores, i);
int diff_total = total - core->total;
int diff_idle = cpu[4] - core->idle;
@@ -58,7 +58,7 @@ _cpumonitor_sysctl_getusage(Instance *inst)
if (diff_total == 0) diff_total = 1;
double ratio = diff_total / 100.0;
- long used = diff_total - diff_idle;
+ unsigned long used = diff_total - diff_idle;
int percent = used / ratio;
if (percent > 100)
@@ -74,59 +74,59 @@ _cpumonitor_sysctl_getusage(Instance *inst)
total_all += total;
idle_all += core->idle;
}
- inst->cfg->cpumonitor.total = total_all / ncpu;
- inst->cfg->cpumonitor.idle = idle_all / ncpu;
- inst->cfg->cpumonitor.percent = (int) (percent_all / ncpu);
+ *prev_total = total_all / ncpu;
+ *prev_idle = idle_all / ncpu;
+ *prev_percent = (int) (percent_all / ncpu);
#elif defined(__OpenBSD__)
int ncpu = _cpumonitor_sysctl_getcores();
if (!ncpu) return;
if (ncpu == 1)
{
- long cpu_times[CPU_STATES];
+ unsigned long cpu_times[CPU_STATES];
int cpu_time_mib[] = { CTL_KERN, KERN_CPTIME };
- size = CPU_STATES * sizeof(long);
+ size = CPU_STATES * sizeof(unsigned long);
if (sysctl(cpu_time_mib, 2, &cpu_times, &size, NULL, 0) < 0)
return;
- long total = 0;
+ unsigned long total = 0;
for (j = 0; j < CPU_STATES; j++)
total += cpu_times[j];
- long idle = cpu_times[4];
+ unsigned long idle = cpu_times[4];
- int diff_total = total - inst->cfg->cpumonitor.total;
- int diff_idle = idle - inst->cfg->cpumonitor.idle;
+ int diff_total = total - *prev_total;
+ int diff_idle = idle - *prev_idle;
if (diff_total == 0) diff_total = 1;
double ratio = diff_total / 100.0;
- long used = diff_total - diff_idle;
+ unsigned long used = diff_total - diff_idle;
int percent = used / ratio;
if (percent > 100)
percent = 100;
else if (percent < 0)
percent = 0;
- inst->cfg->cpumonitor.total = total;
- inst->cfg->cpumonitor.idle = idle; // cpu_times[3];
- inst->cfg->cpumonitor.percent = (int) percent;
+ *prev_total = total;
+ *prev_idle = idle; // cpu_times[3];
+ *prev_percent = (int) percent;
}
else if (ncpu > 1)
{
for (i = 0; i < ncpu; i++)
{
- long cpu_times[CPU_STATES];
- size = CPU_STATES * sizeof(long);
+ unsigned long cpu_times[CPU_STATES];
+ size = CPU_STATES * sizeof(unsigned long);
int cpu_time_mib[] = { CTL_KERN, KERN_CPTIME2, 0 };
cpu_time_mib[2] = i;
if (sysctl(cpu_time_mib, 3, &cpu_times, &size, NULL, 0) < 0)
return;
- long total = 0;
+ unsigned long total = 0;
for (j = 0; j < CPU_STATES - 1; j++)
total += cpu_times[j];
- core = eina_list_nth(inst->cfg->cpumonitor.cores, i);
+ core = eina_list_nth(cores, i);
int diff_total = total - core->total;
int diff_idle = cpu_times[4] - core->idle;
@@ -135,7 +135,7 @@ _cpumonitor_sysctl_getusage(Instance *inst)
if (diff_total == 0) diff_total = 1;
double ratio = diff_total / 100;
- long used = diff_total - diff_idle;
+ unsigned long used = diff_total - diff_idle;
int percent = used / ratio;
core->percent = percent;
@@ -145,9 +145,9 @@ _cpumonitor_sysctl_getusage(Instance *inst)
idle_all += core->idle;
}
- inst->cfg->cpumonitor.total = (total_all / ncpu);
- inst->cfg->cpumonitor.idle = (idle_all / ncpu);
- inst->cfg->cpumonitor.percent = (percent_all / ncpu) + (percent_all % ncpu);
+ *prev_total = (total_all / ncpu);
+ *prev_idle = (idle_all / ncpu);
+ *prev_percent = (percent_all / ncpu) + (percent_all % ncpu);
}
#endif
}
diff --git a/src/modules/sysinfo/memusage/memusage.c b/src/modules/sysinfo/memusage/memusage.c
index 6562c72d84..3cb81451c2 100644
--- a/src/modules/sysinfo/memusage/memusage.c
+++ b/src/modules/sysinfo/memusage/memusage.c
@@ -94,7 +94,7 @@ _memusage_face_update(Instance *inst)
msg->val[8] = inst->cfg->memusage.swp_used;
edje_object_message_send(elm_layout_edje_get(inst->cfg->memusage.o_gadget),
EDJE_MESSAGE_INT_SET, 1, msg);
- free(msg);
+ E_FREE(msg);
if (inst->cfg->memusage.popup)
_memusage_popup_update(inst);
@@ -308,32 +308,7 @@ _memusage_cb_usage_check_end(void *data, Ecore_Thread *th EINA_UNUSED)
{
Thread_Config *thc = data;
e_powersave_sleeper_free(thc->sleeper);
- if (thc->inst->cfg->memusage.defer)
- {
- thc->inst->cfg->memusage.defer = EINA_FALSE;
- thc->inst->cfg->memusage.done = EINA_TRUE;
- if (thc->inst->cfg->esm == E_SYSINFO_MODULE_MEMUSAGE)
- {
- sysinfo_config->items = eina_list_remove(sysinfo_config->items, thc->inst->cfg);
- if (thc->inst->cfg->id >= 0)
- sysinfo_instances = eina_list_remove(sysinfo_instances, thc->inst);
- E_FREE(thc->inst->cfg);
- E_FREE(thc->inst);
- }
- else
- {
- if (thc->inst->cfg->cpumonitor.done && thc->inst->cfg->thermal.done &&
- thc->inst->cfg->netstatus.done && thc->inst->cfg->cpuclock.done && thc->inst->cfg->batman.done)
- {
- sysinfo_config->items = eina_list_remove(sysinfo_config->items, thc->inst->cfg);
- if (thc->inst->cfg->id >= 0)
- sysinfo_instances = eina_list_remove(sysinfo_instances, thc->inst);
- E_FREE(thc->inst->cfg);
- E_FREE(thc->inst);
- }
- }
- }
- E_FREE_FUNC(thc, free);
+ E_FREE(thc);
}
static void
@@ -342,22 +317,21 @@ _memusage_cb_usage_check_notify(void *data,
void *msg EINA_UNUSED)
{
Thread_Config *thc = data;
- Instance *inst = thc->inst;
-
- if (!inst->cfg) return;
- if (inst->cfg->esm != E_SYSINFO_MODULE_MEMUSAGE &&
- inst->cfg->esm != E_SYSINFO_MODULE_SYSINFO) return;
-
- inst->cfg->memusage.mem_percent = thc->mem_percent;
- inst->cfg->memusage.swp_percent = thc->swp_percent;
- inst->cfg->memusage.mem_total = thc->mem_total;
- inst->cfg->memusage.mem_used = thc->mem_used;
- inst->cfg->memusage.mem_cached = thc->mem_cached;
- inst->cfg->memusage.mem_buffers = thc->mem_buffers;
- inst->cfg->memusage.mem_shared = thc->mem_shared;
- inst->cfg->memusage.swp_total = thc->swp_total;
- inst->cfg->memusage.swp_used = thc->swp_used;
- _memusage_face_update(inst);
+
+ if (!thc->inst->cfg) return;
+ if (thc->inst->cfg->esm != E_SYSINFO_MODULE_MEMUSAGE &&
+ thc->inst->cfg->esm != E_SYSINFO_MODULE_SYSINFO) return;
+
+ thc->inst->cfg->memusage.mem_percent = thc->mem_percent;
+ thc->inst->cfg->memusage.swp_percent = thc->swp_percent;
+ thc->inst->cfg->memusage.mem_total = thc->mem_total;
+ thc->inst->cfg->memusage.mem_used = thc->mem_used;
+ thc->inst->cfg->memusage.mem_cached = thc->mem_cached;
+ thc->inst->cfg->memusage.mem_buffers = thc->mem_buffers;
+ thc->inst->cfg->memusage.mem_shared = thc->mem_shared;
+ thc->inst->cfg->memusage.swp_total = thc->swp_total;
+ thc->inst->cfg->memusage.swp_used = thc->swp_used;
+ _memusage_face_update(thc->inst);
}
static Eina_Bool
@@ -431,10 +405,8 @@ _memusage_removed_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_data)
ecore_event_handler_del(handler);
if (inst->cfg->memusage.usage_check_thread)
{
- inst->cfg->memusage.defer = EINA_TRUE;
ecore_thread_cancel(inst->cfg->memusage.usage_check_thread);
inst->cfg->memusage.usage_check_thread = NULL;
- return;
}
sysinfo_config->items = eina_list_remove(sysinfo_config->items, inst->cfg);
if (inst->cfg->id >= 0)
@@ -455,26 +427,11 @@ sysinfo_memusage_remove(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_U
E_FREE_FUNC(inst->cfg->memusage.configure, evas_object_del);
if (inst->cfg->memusage.usage_check_thread)
{
- inst->cfg->memusage.defer = EINA_TRUE;
ecore_thread_cancel(inst->cfg->memusage.usage_check_thread);
inst->cfg->memusage.usage_check_thread = NULL;
- return;
}
EINA_LIST_FREE(inst->cfg->memusage.handlers, handler)
ecore_event_handler_del(handler);
- inst->cfg->memusage.done = EINA_TRUE;
- if (inst->cfg->esm == E_SYSINFO_MODULE_SYSINFO)
- {
- if (inst->cfg->thermal.done && inst->cfg->cpumonitor.done &&
- inst->cfg->netstatus.done && inst->cfg->cpuclock.done && inst->cfg->batman.done)
- {
- sysinfo_config->items = eina_list_remove(sysinfo_config->items, inst->cfg);
- if (inst->cfg->id >= 0)
- sysinfo_instances = eina_list_remove(sysinfo_instances, inst);
- E_FREE(inst->cfg);
- E_FREE(inst);
- }
- }
}
static void
@@ -517,8 +474,6 @@ _memusage_created_cb(void *data, Evas_Object *obj, void *event_data EINA_UNUSED)
Evas_Object *
sysinfo_memusage_create(Evas_Object *parent, Instance *inst)
{
- inst->cfg->memusage.defer = EINA_FALSE;
- inst->cfg->memusage.done = EINA_FALSE;
inst->cfg->memusage.mem_percent = 0;
inst->cfg->memusage.swp_percent = 0;
inst->cfg->memusage.mem_total = 0;
@@ -599,8 +554,6 @@ memusage_create(Evas_Object *parent, int *id, E_Gadget_Site_Orient orient EINA_U
inst = E_NEW(Instance, 1);
inst->cfg = _conf_item_get(id);
*id = inst->cfg->id;
- inst->cfg->memusage.defer = EINA_FALSE;
- inst->cfg->memusage.done = EINA_FALSE;
inst->cfg->memusage.mem_percent = 0;
inst->cfg->memusage.swp_percent = 0;
inst->cfg->memusage.mem_total = 0;
diff --git a/src/modules/sysinfo/memusage/memusage_sysctl.c b/src/modules/sysinfo/memusage/memusage_sysctl.c
index af85e7522c..1760497c50 100644
--- a/src/modules/sysinfo/memusage/memusage_sysctl.c
+++ b/src/modules/sysinfo/memusage/memusage_sysctl.c
@@ -104,7 +104,7 @@ void _memusage_sysctl_getusage(unsigned long *mem_total,
*swp_used >>= 10;
- free(mib);
+ E_FREE(mib);
#elif defined(__OpenBSD__)
static int mib[] = { CTL_HW, HW_PHYSMEM64 };
static int bcstats_mib[] = { CTL_VFS, VFS_GENERIC, VFS_BCACHESTAT };
@@ -145,7 +145,7 @@ void _memusage_sysctl_getusage(unsigned long *mem_total,
}
}
swap_out:
- if (swdev) free(swdev);
+ if (swdev) E_FREE(swdev);
*mem_total /= 1024;
diff --git a/src/modules/sysinfo/mod.c b/src/modules/sysinfo/mod.c
index d3fea5ae3c..d8109ad5bf 100644
--- a/src/modules/sysinfo/mod.c
+++ b/src/modules/sysinfo/mod.c
@@ -50,8 +50,8 @@ sysinfo_init(void)
E_CONFIG_VAL(D, T, netstatus.poll_interval, INT);
E_CONFIG_VAL(D, T, netstatus.automax, INT);
E_CONFIG_VAL(D, T, netstatus.inmax, INT);
- E_CONFIG_VAL(D, T, netstatus.receive_units, INT);
E_CONFIG_VAL(D, T, netstatus.outmax, INT);
+ E_CONFIG_VAL(D, T, netstatus.receive_units, INT);
E_CONFIG_VAL(D, T, netstatus.send_units, INT);
conf_edd = E_CONFIG_DD_NEW("Sysinfo_Config", Config);
@@ -82,7 +82,7 @@ sysinfo_init(void)
ci->batman.time_left = -2;
ci->batman.have_battery = -2;
ci->batman.have_power = -2;
-#if defined(HAVE_EEZ)E || defined(__OpenBSD__) || defined(__NetBSD__)
+#if defined(HAVE_EEZE) || defined(__OpenBSD__) || defined(__NetBSD__)
ci->batman.fuzzy = 0;
#endif
ci->batman.desktop_notifications = 0;
@@ -98,8 +98,6 @@ sysinfo_init(void)
ci->thermal.units = CELSIUS;
ci->thermal.popup = NULL;
ci->thermal.configure = NULL;
- ci->thermal.defer = EINA_FALSE;
- ci->thermal.done = EINA_FALSE;
ci->cpuclock.poll_interval = 32;
ci->cpuclock.restore_governor = 0;
ci->cpuclock.auto_powersave = 1;
@@ -109,41 +107,25 @@ sysinfo_init(void)
ci->cpuclock.pstate_max = 101;
ci->cpuclock.popup = NULL;
ci->cpuclock.configure = NULL;
- ci->cpuclock.defer = EINA_FALSE;
- ci->cpuclock.done = EINA_FALSE;
ci->cpumonitor.poll_interval = 32;
- ci->cpumonitor.total = 0;
- ci->cpumonitor.idle = 0;
ci->cpumonitor.percent = 0;
ci->cpumonitor.popup = NULL;
ci->cpumonitor.configure = NULL;
- ci->cpumonitor.defer = EINA_FALSE;
- ci->cpumonitor.done = EINA_FALSE;
ci->memusage.poll_interval = 32;
ci->memusage.mem_percent = 0;
ci->memusage.swp_percent = 0;
ci->memusage.popup = NULL;
ci->memusage.configure = NULL;
- ci->memusage.defer = EINA_FALSE;
- ci->memusage.done = EINA_FALSE;
ci->netstatus.poll_interval = 32;
ci->netstatus.automax = EINA_TRUE;
- ci->netstatus.receive_units = NETSTATUS_UNIT_BYTES;
- ci->netstatus.send_units = NETSTATUS_UNIT_BYTES;
- ci->netstatus.in = 0;
- ci->netstatus.out = 0;
ci->netstatus.inmax = 0;
ci->netstatus.outmax = 0;
- ci->netstatus.incurrent = 0;
- ci->netstatus.outcurrent = 0;
- ci->netstatus.inpercent = 0;
- ci->netstatus.outpercent = 0;
+ ci->netstatus.receive_units = NETSTATUS_UNIT_BYTES;
+ ci->netstatus.send_units = NETSTATUS_UNIT_BYTES;
ci->netstatus.instring = NULL;
ci->netstatus.outstring = NULL;
ci->netstatus.popup = NULL;
ci->netstatus.configure = NULL;
- ci->netstatus.defer = EINA_FALSE;
- ci->netstatus.done = EINA_FALSE;
E_CONFIG_LIMIT(ci->batman.poll_interval, 4, 4096);
E_CONFIG_LIMIT(ci->batman.alert, 0, 60);
@@ -193,7 +175,7 @@ sysinfo_shutdown(void)
Config_Item *ci;
EINA_LIST_FREE(sysinfo_config->items, ci)
{
- free(ci);
+ E_FREE(ci);
}
E_FREE(sysinfo_config);
}
diff --git a/src/modules/sysinfo/netstatus/netstatus.c b/src/modules/sysinfo/netstatus/netstatus.c
index e7238eca38..e8e9ad3c74 100644
--- a/src/modules/sysinfo/netstatus/netstatus.c
+++ b/src/modules/sysinfo/netstatus/netstatus.c
@@ -6,34 +6,43 @@ struct _Thread_Config
{
int interval;
Instance *inst;
- int percent;
- long current;
+ Eina_Bool automax;
+ int inpercent;
+ unsigned long in;
+ unsigned long incurrent;
+ unsigned long inmax;
+ Eina_Stringshare *instring;
+ int outpercent;
+ unsigned long out;
+ unsigned long outcurrent;
+ unsigned long outmax;
+ Eina_Stringshare *outstring;
E_Powersave_Sleeper *sleeper;
};
static void
-_netstatus_face_update(Instance *inst)
+_netstatus_face_update(Thread_Config *thc)
{
Edje_Message_Int_Set *msg;
msg = malloc(sizeof(Edje_Message_Int_Set) + 6 * sizeof(int));
EINA_SAFETY_ON_NULL_RETURN(msg);
msg->count = 6;
- msg->val[0] = inst->cfg->netstatus.incurrent;
- msg->val[1] = inst->cfg->netstatus.inpercent;
- msg->val[2] = inst->cfg->netstatus.inmax;
- msg->val[3] = inst->cfg->netstatus.outcurrent;
- msg->val[4] = inst->cfg->netstatus.outpercent;
- msg->val[5] = inst->cfg->netstatus.outmax;
- edje_object_message_send(elm_layout_edje_get(inst->cfg->netstatus.o_gadget),
+ msg->val[0] = thc->incurrent;
+ msg->val[1] = thc->inpercent;
+ msg->val[2] = thc->inmax;
+ msg->val[3] = thc->outcurrent;
+ msg->val[4] = thc->outpercent;
+ msg->val[5] = thc->outmax;
+ edje_object_message_send(elm_layout_edje_get(thc->inst->cfg->netstatus.o_gadget),
EDJE_MESSAGE_INT_SET, 1, msg);
- free(msg);
+ E_FREE(msg);
- if (inst->cfg->netstatus.popup)
+ if (thc->inst->cfg->netstatus.popup)
{
char text[4096];
- snprintf(text, sizeof(text), "%s<br>%s", inst->cfg->netstatus.instring, inst->cfg->netstatus.outstring);
- elm_object_text_set(inst->cfg->netstatus.popup_label, text);
+ snprintf(text, sizeof(text), "%s<br>%s", thc->instring, thc->outstring);
+ elm_object_text_set(thc->inst->cfg->netstatus.popup_label, text);
}
}
@@ -130,15 +139,45 @@ _netstatus_cb_usage_check_main(void *data, Ecore_Thread *th)
Thread_Config *thc = data;
for (;;)
{
+ char rin[4096], rout[4096];
+
if (ecore_thread_check(th)) break;
#if defined(__FreeBSD__) || defined(__DragonFly__) || defined(__OpenBSD__)
- _netstatus_sysctl_getrstatus(thc->inst);
- _netstatus_sysctl_gettstatus(thc->inst);
+ _netstatus_sysctl_getrstatus(thc->automax, &thc->in, &thc->incurrent, &thc->inmax, &thc->inpercent);
+ _netstatus_sysctl_gettstatus(thc->automax, &thc->out, &thc->outcurrent, &thc->outmax, &thc->outpercent);
#else
- _netstatus_proc_getrstatus(thc->inst);
- _netstatus_proc_gettstatus(thc->inst);
+ _netstatus_proc_getrstatus(thc->automax, &thc->in, &thc->incurrent, &thc->inmax, &thc->inpercent);
+ _netstatus_proc_gettstatus(thc->automax, &thc->out, &thc->outcurrent, &thc->outmax, &thc->outpercent);
#endif
- ecore_thread_feedback(th, NULL);
+ if (!thc->incurrent)
+ {
+ snprintf(rin, sizeof(rin), "%s: 0 B/s", _("Receiving"));
+ }
+ else
+ {
+ if (thc->incurrent > 1048576)
+ snprintf(rin, sizeof(rin), "%s: %.2f MB/s", _("Receiving"), ((float)thc->incurrent / 1048576));
+ else if ((thc->incurrent > 1024) && (thc->incurrent < 1048576))
+ snprintf(rin, sizeof(rin), "%s: %lu KB/s", _("Receiving"), (thc->incurrent / 1024));
+ else
+ snprintf(rin, sizeof(rin), "%s: %lu B/s", _("Receiving"), thc->incurrent);
+ }
+ eina_stringshare_replace(&thc->instring, rin);
+ if (!thc->outcurrent)
+ {
+ snprintf(rout, sizeof(rout), "%s: 0 B/s", _("Receiving"));
+ }
+ else
+ {
+ if (thc->outcurrent > 1048576)
+ snprintf(rout, sizeof(rout), "%s: %.2f MB/s", _("Receiving"), ((float)thc->outcurrent / 1048576));
+ else if ((thc->outcurrent > 1024) && (thc->outcurrent < 1048576))
+ snprintf(rout, sizeof(rout), "%s: %lu KB/s", _("Receiving"), (thc->outcurrent / 1024));
+ else
+ snprintf(rout, sizeof(rout), "%s: %lu B/s", _("Receiving"), thc->outcurrent);
+ }
+ eina_stringshare_replace(&thc->outstring, rout);
+ ecore_thread_feedback(th, NULL);
if (ecore_thread_check(th)) break;
e_powersave_sleeper_sleep(thc->sleeper, thc->interval);
if (e_powersave_mode_get() == E_POWERSAVE_MODE_FREEZE)
@@ -155,12 +194,13 @@ _netstatus_cb_usage_check_notify(void *data,
void *msg EINA_UNUSED)
{
Thread_Config *thc = data;
- Instance *inst = thc->inst;
- if (!inst->cfg) return;
- if (inst->cfg->esm != E_SYSINFO_MODULE_NETSTATUS && inst->cfg->esm != E_SYSINFO_MODULE_SYSINFO) return;
+ if (!thc->inst->cfg) return;
+ if (thc->inst->cfg->esm != E_SYSINFO_MODULE_NETSTATUS && thc->inst->cfg->esm != E_SYSINFO_MODULE_SYSINFO) return;
- _netstatus_face_update(inst);
+ eina_stringshare_replace(&thc->inst->cfg->netstatus.instring, thc->instring);
+ eina_stringshare_replace(&thc->inst->cfg->netstatus.outstring, thc->outstring);
+ _netstatus_face_update(thc);
}
static void
@@ -168,34 +208,9 @@ _netstatus_cb_usage_check_end(void *data, Ecore_Thread *th EINA_UNUSED)
{
Thread_Config *thc = data;
e_powersave_sleeper_free(thc->sleeper);
- if (thc->inst->cfg->netstatus.defer)
- {
- E_FREE_FUNC(thc->inst->cfg->netstatus.instring, eina_stringshare_del);
- E_FREE_FUNC(thc->inst->cfg->netstatus.outstring, eina_stringshare_del);
- thc->inst->cfg->netstatus.defer = EINA_FALSE;
- thc->inst->cfg->netstatus.done = EINA_TRUE;
- if (thc->inst->cfg->esm == E_SYSINFO_MODULE_NETSTATUS)
- {
- sysinfo_config->items = eina_list_remove(sysinfo_config->items, thc->inst->cfg);
- if (thc->inst->cfg->id >= 0)
- sysinfo_instances = eina_list_remove(sysinfo_instances, thc->inst);
- E_FREE(thc->inst->cfg);
- E_FREE(thc->inst);
- }
- else
- {
- if (thc->inst->cfg->memusage.done && thc->inst->cfg->thermal.done &&
- thc->inst->cfg->cpumonitor.done && thc->inst->cfg->cpuclock.done && thc->inst->cfg->batman.done)
- {
- sysinfo_config->items = eina_list_remove(sysinfo_config->items, thc->inst->cfg);
- if (thc->inst->cfg->id >= 0)
- sysinfo_instances = eina_list_remove(sysinfo_instances, thc->inst);
- E_FREE(thc->inst->cfg);
- E_FREE(thc->inst);
- }
- }
- }
- E_FREE_FUNC(thc, free);
+ E_FREE_FUNC(thc->instring, eina_stringshare_del);
+ E_FREE_FUNC(thc->outstring, eina_stringshare_del);
+ E_FREE(thc);
}
static Eina_Bool
@@ -237,7 +252,18 @@ _netstatus_config_updated(Instance *inst)
thc->inst = inst;
thc->sleeper = e_powersave_sleeper_new();
thc->interval = inst->cfg->netstatus.poll_interval;
- inst->cfg->netstatus.usage_check_thread =
+ thc->in = 0;
+ thc->inmax = inst->cfg->netstatus.inmax;
+ thc->incurrent = 0;
+ thc->inpercent = 0;
+ thc->instring = NULL;
+ thc->out = 0;
+ thc->outmax = inst->cfg->netstatus.outmax;
+ thc->outcurrent = 0;
+ thc->outpercent = 0;
+ thc->outstring = NULL;
+ thc->automax = inst->cfg->netstatus.automax;
+ inst->cfg->netstatus.usage_check_thread =
ecore_thread_feedback_run(_netstatus_cb_usage_check_main,
_netstatus_cb_usage_check_notify,
_netstatus_cb_usage_check_end,
@@ -265,10 +291,8 @@ _netstatus_removed_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_data
ecore_event_handler_del(handler);
if (inst->cfg->netstatus.usage_check_thread)
{
- inst->cfg->netstatus.defer = EINA_TRUE;
ecore_thread_cancel(inst->cfg->netstatus.usage_check_thread);
inst->cfg->netstatus.usage_check_thread = NULL;
- return;
}
E_FREE_FUNC(inst->cfg->netstatus.instring, eina_stringshare_del);
E_FREE_FUNC(inst->cfg->netstatus.outstring, eina_stringshare_del);
@@ -294,26 +318,12 @@ sysinfo_netstatus_remove(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_
ecore_event_handler_del(handler);
if (inst->cfg->netstatus.usage_check_thread)
{
- inst->cfg->netstatus.defer = EINA_TRUE;
ecore_thread_cancel(inst->cfg->netstatus.usage_check_thread);
inst->cfg->netstatus.usage_check_thread = NULL;
return;
}
E_FREE_FUNC(inst->cfg->netstatus.instring, eina_stringshare_del);
E_FREE_FUNC(inst->cfg->netstatus.outstring, eina_stringshare_del);
- inst->cfg->netstatus.done = EINA_TRUE;
- if (inst->cfg->esm == E_SYSINFO_MODULE_SYSINFO)
- {
- if (inst->cfg->memusage.done && inst->cfg->thermal.done &&
- inst->cfg->cpumonitor.done && inst->cfg->cpuclock.done && inst->cfg->batman.done)
- {
- sysinfo_config->items = eina_list_remove(sysinfo_config->items, inst->cfg);
- if (inst->cfg->id >= 0)
- sysinfo_instances = eina_list_remove(sysinfo_instances, inst);
- E_FREE(inst->cfg);
- E_FREE(inst);
- }
- }
}
static void
@@ -324,6 +334,9 @@ _netstatus_created_cb(void *data, Evas_Object *obj, void *event_data EINA_UNUSED
e_gadget_configure_cb_set(inst->o_main, _netstatus_configure_cb);
+ inst->cfg->netstatus.instring = NULL;
+ inst->cfg->netstatus.outstring = NULL;
+
inst->cfg->netstatus.o_gadget = elm_layout_add(inst->o_main);
if (orient == E_GADGET_SITE_ORIENT_VERTICAL)
e_theme_edje_object_set(inst->cfg->netstatus.o_gadget,
@@ -349,17 +362,9 @@ _netstatus_created_cb(void *data, Evas_Object *obj, void *event_data EINA_UNUSED
Evas_Object *
sysinfo_netstatus_create(Evas_Object *parent, Instance *inst)
{
- inst->cfg->netstatus.defer = EINA_FALSE;
- inst->cfg->netstatus.done = EINA_FALSE;
- inst->cfg->netstatus.in = 0;
- inst->cfg->netstatus.out = 0;
- inst->cfg->netstatus.incurrent = 0;
- inst->cfg->netstatus.outcurrent = 0;
- inst->cfg->netstatus.inpercent = 0;
- inst->cfg->netstatus.outpercent = 0;
+ inst->cfg->netstatus.popup = NULL;
inst->cfg->netstatus.instring = NULL;
inst->cfg->netstatus.outstring = NULL;
- inst->cfg->netstatus.popup = NULL;
inst->cfg->netstatus.o_gadget = elm_layout_add(parent);
e_theme_edje_object_set(inst->cfg->netstatus.o_gadget, "base/theme/gadget/netstatus",
"e/gadget/netstatus/main");
@@ -399,16 +404,8 @@ _conf_item_get(int *id)
ci->esm = E_SYSINFO_MODULE_NETSTATUS;
ci->netstatus.poll_interval = 32;
ci->netstatus.automax = EINA_TRUE;
- ci->netstatus.inmax = 0;
- ci->netstatus.outmax = 0;
ci->netstatus.receive_units = NETSTATUS_UNIT_BYTES;
ci->netstatus.send_units = NETSTATUS_UNIT_BYTES;
- ci->netstatus.in = 0;
- ci->netstatus.out = 0;
- ci->netstatus.incurrent = 0;
- ci->netstatus.outcurrent = 0;
- ci->netstatus.inpercent = 0;
- ci->netstatus.outpercent = 0;
ci->netstatus.instring = NULL;
ci->netstatus.outstring = NULL;
ci->netstatus.popup = NULL;
@@ -426,14 +423,6 @@ netstatus_create(Evas_Object *parent, int *id, E_Gadget_Site_Orient orient EINA_
inst = E_NEW(Instance, 1);
inst->cfg = _conf_item_get(id);
*id = inst->cfg->id;
- inst->cfg->netstatus.defer = EINA_FALSE;
- inst->cfg->netstatus.done = EINA_FALSE;
- inst->cfg->netstatus.in = 0;
- inst->cfg->netstatus.out = 0;
- inst->cfg->netstatus.incurrent = 0;
- inst->cfg->netstatus.outcurrent = 0;
- inst->cfg->netstatus.inpercent = 0;
- inst->cfg->netstatus.outpercent = 0;
inst->cfg->netstatus.instring = NULL;
inst->cfg->netstatus.outstring = NULL;
inst->cfg->netstatus.popup = NULL;
diff --git a/src/modules/sysinfo/netstatus/netstatus.h b/src/modules/sysinfo/netstatus/netstatus.h
index 87a729b6b8..257434d56d 100644
--- a/src/modules/sysinfo/netstatus/netstatus.h
+++ b/src/modules/sysinfo/netstatus/netstatus.h
@@ -17,9 +17,9 @@ struct _Netstatus_Config
};
EINTERN void _netstatus_config_updated(Instance *inst);
-EINTERN void _netstatus_proc_getrstatus(Instance *inst);
-EINTERN void _netstatus_proc_gettstatus(Instance *inst);
-EINTERN void _netstatus_sysctl_getrstatus(Instance *inst);
-EINTERN void _netstatus_sysctl_gettstatus(Instance *inst);
+EINTERN void _netstatus_proc_getrstatus(Eina_Bool automax, unsigned long *prev_in, unsigned long *prev_incurrent, unsigned long *prev_inmax, int *prev_inpercent);
+EINTERN void _netstatus_proc_gettstatus(Eina_Bool automax, unsigned long *prev_out, unsigned long *prev_outcurrent, unsigned long *prev_outmax, int *prev_outpercent);
+EINTERN void _netstatus_sysctl_getrstatus(Eina_Bool automax, unsigned long *prev_in, unsigned long *prev_incurrent, unsigned long *prev_inmax, int *prev_inpercent);
+EINTERN void _netstatus_sysctl_gettstatus(Eina_Bool automax, unsigned long *prev_out, unsigned long *prev_outcurrent, unsigned long *prev_outmax, int *prev_outpercent);
EINTERN Evas_Object *netstatus_configure(Instance *inst);
#endif
diff --git a/src/modules/sysinfo/netstatus/netstatus_config.c b/src/modules/sysinfo/netstatus/netstatus_config.c
index 12d404b007..81bad60b82 100644
--- a/src/modules/sysinfo/netstatus/netstatus_config.c
+++ b/src/modules/sysinfo/netstatus/netstatus_config.c
@@ -7,7 +7,7 @@ _config_close(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, voi
Instance *inst = nc->inst;
E_FREE_FUNC(inst->cfg->netstatus.configure, evas_object_del);
- E_FREE_FUNC(nc, free);
+ E_FREE(nc);
e_config_save_queue();
}
diff --git a/src/modules/sysinfo/netstatus/netstatus_proc.c b/src/modules/sysinfo/netstatus/netstatus_proc.c
index 191d1ea3cb..f7e92a8b8e 100644
--- a/src/modules/sysinfo/netstatus/netstatus_proc.c
+++ b/src/modules/sysinfo/netstatus/netstatus_proc.c
@@ -1,12 +1,16 @@
#include "netstatus.h"
void
-_netstatus_proc_getrstatus(Instance *inst)
+_netstatus_proc_getrstatus(Eina_Bool automax,
+ unsigned long *prev_in,
+ unsigned long *prev_incurrent,
+ unsigned long *prev_inmax,
+ int *prev_inpercent)
{
- long in, dummy, tot_in = 0;
- long diffin;
+ unsigned long in, dummy, tot_in = 0;
+ unsigned long diffin;
int percent = 0;
- char buf[4096], rin[4096], dummys[64];
+ char buf[4096], dummys[64];
FILE *f;
f = fopen("/proc/net/dev", "r");
@@ -23,47 +27,37 @@ _netstatus_proc_getrstatus(Instance *inst)
}
fclose(f);
}
- diffin = tot_in - inst->cfg->netstatus.in;
- if (!inst->cfg->netstatus.in)
- inst->cfg->netstatus.in = tot_in;
+ diffin = tot_in - *prev_in;
+ if (!*prev_in)
+ *prev_in = tot_in;
else
{
- inst->cfg->netstatus.in = tot_in;
- if (inst->cfg->netstatus.automax)
+ *prev_in = tot_in;
+ if (automax)
{
- if (diffin > inst->cfg->netstatus.inmax)
- inst->cfg->netstatus.inmax = diffin;
+ if (diffin > *prev_inmax)
+ *prev_inmax = diffin;
}
- inst->cfg->netstatus.incurrent = diffin;
- if (inst->cfg->netstatus.inmax > 0)
- percent = 100 * ((float)inst->cfg->netstatus.incurrent / (float)inst->cfg->netstatus.inmax);
+ *prev_incurrent = diffin;
+ if (*prev_inmax > 0)
+ percent = 100 * ((float)*prev_incurrent / (float)*prev_inmax);
if (percent > 100) percent = 100;
else if (percent < 0) percent = 0;
- inst->cfg->netstatus.inpercent = percent;
+ *prev_inpercent = percent;
}
- if (!diffin)
- {
- snprintf(rin, sizeof(rin), "%s: 0 B/s", _("Receiving"));
- }
- else
- {
- if (diffin > 1048576)
- snprintf(rin, sizeof(rin), "%s: %.2f MB/s", _("Receiving"), ((float)diffin / 1048576));
- else if ((diffin > 1024) && (diffin < 1048576))
- snprintf(rin, sizeof(rin), "%s: %lu KB/s", _("Receiving"), (diffin / 1024));
- else
- snprintf(rin, sizeof(rin), "%s: %lu B/s", _("Receiving"), diffin);
- }
- eina_stringshare_replace(&inst->cfg->netstatus.instring, rin);
}
void
-_netstatus_proc_gettstatus(Instance *inst)
+_netstatus_proc_gettstatus(Eina_Bool automax,
+ unsigned long *prev_out,
+ unsigned long *prev_outcurrent,
+ unsigned long *prev_outmax,
+ int *prev_outpercent)
{
- long out, dummy, tot_out = 0;
- long diffout;
+ unsigned long out, dummy, tot_out = 0;
+ unsigned long diffout;
int percent = 0;
- char buf[4096], rout[4096], dummys[64];
+ char buf[4096], dummys[64];
FILE *f;
f = fopen("/proc/net/dev", "r");
@@ -80,37 +74,23 @@ _netstatus_proc_gettstatus(Instance *inst)
}
fclose(f);
}
- diffout = tot_out - inst->cfg->netstatus.out;
- if (!inst->cfg->netstatus.out)
- inst->cfg->netstatus.out = tot_out;
+ diffout = tot_out - *prev_out;
+ if (!*prev_out)
+ *prev_out = tot_out;
else
{
- inst->cfg->netstatus.out = tot_out;
- if (inst->cfg->netstatus.automax)
+ *prev_out = tot_out;
+ if (automax)
{
- if (diffout > inst->cfg->netstatus.outmax)
- inst->cfg->netstatus.outmax = diffout;
+ if (diffout > *prev_outmax)
+ *prev_outmax = diffout;
}
- inst->cfg->netstatus.outcurrent = diffout;
- if (inst->cfg->netstatus.outcurrent > 0)
- percent = 100 * ((float)inst->cfg->netstatus.outcurrent / (float)inst->cfg->netstatus.outmax);
+ *prev_outcurrent = diffout;
+ if (*prev_outcurrent > 0)
+ percent = 100 * ((float)*prev_outcurrent / (float)*prev_outmax);
if (percent > 100) percent = 100;
else if (percent < 0) percent = 0;
- inst->cfg->netstatus.outpercent = percent;
- }
- if (!diffout)
- {
- snprintf(rout, sizeof(rout), "%s: 0 B/s", _("Sending"));
- }
- else
- {
- if (diffout > 1048576)
- snprintf(rout, sizeof(rout), "%s: %.2f MB/s", _("Sending"), ((float)diffout / 1048576));
- else if ((diffout > 1024) && (diffout < 1048576))
- snprintf(rout, sizeof(rout), "%s: %lu KB/s", _("Sending"), (diffout / 1024));
- else
- snprintf(rout, sizeof(rout), "%s: %lu B/s", _("Sending"), diffout);
+ *prev_outpercent = percent;
}
- eina_stringshare_replace(&inst->cfg->netstatus.outstring, rout);
}
diff --git a/src/modules/sysinfo/netstatus/netstatus_sysctl.c b/src/modules/sysinfo/netstatus/netstatus_sysctl.c
index e37b8af95d..8822d6e3e9 100644
--- a/src/modules/sysinfo/netstatus/netstatus_sysctl.c
+++ b/src/modules/sysinfo/netstatus/netstatus_sysctl.c
@@ -106,10 +106,13 @@ _openbsd_generic_network_status(unsigned long int *in, unsigned long int *out)
#endif
void
-_netstatus_sysctl_getrstatus(Instance *inst)
+_netstatus_sysctl_getrstatus(Eina_Bool automax,
+ unsigned long *prev_in,
+ unsigned long *prev_incurrent,
+ unsigned long *prev_inmax,
+ int *prev_inpercent)
{
- char rin[256];
- long tot_in = 0, diffin;
+ unsigned long tot_in = 0, diffin;
int percent = 0;
unsigned long int incoming = 0, outgoing = 0;
#if defined(__OpenBSD__)
@@ -119,45 +122,34 @@ _netstatus_sysctl_getrstatus(Instance *inst)
#endif
tot_in = incoming;
- diffin = tot_in - inst->cfg->netstatus.in;
- if (!inst->cfg->netstatus.in)
- inst->cfg->netstatus.in = tot_in;
+ diffin = tot_in - *prev_in;
+ if (!*prev_in)
+ *prev_in = tot_in;
else
{
- inst->cfg->netstatus.in = tot_in;
- if (inst->cfg->netstatus.automax)
+ *prev_in = tot_in;
+ if (automax)
{
- if (diffin > inst->cfg->netstatus.inmax)
- inst->cfg->netstatus.inmax = diffin;
+ if (diffin > *prev_inmax)
+ *prev_inmax = diffin;
}
- inst->cfg->netstatus.incurrent = diffin;
- if (inst->cfg->netstatus.inmax > 0)
- percent = 100 * ((float)inst->cfg->netstatus.incurrent / (float)inst->cfg->netstatus.inmax);
+ *prev_incurrent = diffin;
+ if (*prev_inmax > 0)
+ percent = 100 * ((float)*prev_incurrent / (float)*prev_inmax);
if (percent > 100) percent = 100;
else if (percent < 0) percent = 0;
- inst->cfg->netstatus.inpercent = percent;
+ *prev_inpercent = percent;
}
- if (!diffin)
- {
- snprintf(rin, sizeof(rin), "%s: 0 B/s", _("Receiving"));
- }
- else
- {
- if (diffin > 1048576)
- snprintf(rin, sizeof(rin), "%s: %.2f MB/s", _("Receiving"), ((float)diffin / 1048576));
- else if ((diffin > 1024) && (diffin < 1048576))
- snprintf(rin, sizeof(rin), "%s: %lu KB/s", _("Receiving"), (diffin / 1024));
- else
- snprintf(rin, sizeof(rin), "%s: %lu B/s", _("Receiving"), diffin);
- }
- eina_stringshare_replace(&inst->cfg->netstatus.instring, rin);
}
void
-_netstatus_sysctl_gettstatus(Instance *inst)
+_netstatus_sysctl_gettstatus(Eina_Bool automax,
+ unsigned long *prev_out,
+ unsigned long *prev_outcurrent,
+ unsigned long *prev_outmax,
+ int *prev_outpercent)
{
- char rout[256];
- long tot_out = 0, diffout;
+ unsigned long tot_out = 0, diffout;
int percent = 0;
unsigned long int incoming = 0, outgoing = 0;
#if defined(__OpenBSD__)
@@ -167,37 +159,23 @@ _netstatus_sysctl_gettstatus(Instance *inst)
#endif
tot_out = outgoing;
- diffout = tot_out - inst->cfg->netstatus.out;
- if (!inst->cfg->netstatus.out)
- inst->cfg->netstatus.out = tot_out;
+ diffout = tot_out - *prev_out;
+ if (!*prev_out)
+ *prev_out = tot_out;
else
{
- inst->cfg->netstatus.out = tot_out;
- if (inst->cfg->netstatus.automax)
+ *prev_out = tot_out;
+ if (automax)
{
- if (diffout > inst->cfg->netstatus.outmax)
- inst->cfg->netstatus.outmax = diffout;
+ if (diffout > *prev_outmax)
+ *prev_outmax = diffout;
}
- inst->cfg->netstatus.outcurrent = diffout;
- if (inst->cfg->netstatus.outcurrent > 0)
- percent = 100 * ((float)inst->cfg->netstatus.outcurrent / (float)inst->cfg->netstatus.outmax);
+ *prev_outcurrent = diffout;
+ if (*prev_outcurrent > 0)
+ percent = 100 * ((float)*prev_outcurrent / (float)*prev_outmax);
if (percent > 100) percent = 100;
else if (percent < 0) percent = 0;
- inst->cfg->netstatus.outpercent = percent;
- }
- if (!diffout)
- {
- snprintf(rout, sizeof(rout), "%s: 0 B/s", _("Sending"));
- }
- else
- {
- if (diffout > 1048576)
- snprintf(rout, sizeof(rout), "%s: %.2f MB/s", _("Sending"), ((float)diffout / 1048576));
- else if ((diffout > 1024) && (diffout < 1048576))
- snprintf(rout, sizeof(rout), "%s: %lu KB/s", _("Sending"), (diffout / 1024));
- else
- snprintf(rout, sizeof(rout), "%s: %lu B/s", _("Sending"), diffout);
+ *prev_outpercent = percent;
}
- eina_stringshare_replace(&inst->cfg->netstatus.outstring, rout);
}
diff --git a/src/modules/sysinfo/sysinfo.c b/src/modules/sysinfo/sysinfo.c
index 9623652c79..17b5ced320 100644
--- a/src/modules/sysinfo/sysinfo.c
+++ b/src/modules/sysinfo/sysinfo.c
@@ -19,15 +19,11 @@ _sysinfo_removed_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_data)
evas_object_event_callback_del_full(inst->o_main, EVAS_CALLBACK_DEL, _sysinfo_deleted_cb, data);
if (inst && inst->cfg)
{
- if (inst->cfg->batman.done && inst->cfg->memusage.done && inst->cfg->thermal.done &&
- inst->cfg->cpumonitor.done && inst->cfg->cpuclock.done && inst->cfg->netstatus.done)
- {
- sysinfo_config->items = eina_list_remove(sysinfo_config->items, inst->cfg);
- if (inst->cfg->id >= 0)
- sysinfo_instances = eina_list_remove(sysinfo_instances, inst);
- E_FREE(inst->cfg);
- E_FREE(inst);
- }
+ sysinfo_config->items = eina_list_remove(sysinfo_config->items, inst->cfg);
+ if (inst->cfg->id >= 0)
+ sysinfo_instances = eina_list_remove(sysinfo_instances, inst);
+ E_FREE(inst->cfg);
+ E_FREE(inst);
}
}
@@ -107,7 +103,6 @@ _conf_item_get(int *id)
ci->batman.desktop_notifications = 0;
ci->batman.popup = NULL;
ci->batman.configure = NULL;
- ci->batman.done = EINA_FALSE;
ci->thermal.poll_interval = 128;
ci->thermal.low = 30;
ci->thermal.high = 80;
@@ -116,8 +111,6 @@ _conf_item_get(int *id)
ci->thermal.units = CELSIUS;
ci->thermal.popup = NULL;
ci->thermal.configure = NULL;
- ci->thermal.done = EINA_FALSE;
- ci->thermal.defer = EINA_FALSE;
ci->cpuclock.poll_interval = 32;
ci->cpuclock.restore_governor = 0;
ci->cpuclock.auto_powersave = 1;
@@ -127,13 +120,7 @@ _conf_item_get(int *id)
ci->cpuclock.pstate_max = 101;
ci->cpuclock.popup = NULL;
ci->cpuclock.configure = NULL;
- ci->cpuclock.done = EINA_FALSE;
- ci->cpuclock.defer = EINA_FALSE;
- ci->cpumonitor.done = EINA_FALSE;
- ci->cpumonitor.defer = EINA_FALSE;
ci->cpumonitor.poll_interval = 32;
- ci->cpumonitor.total = 0;
- ci->cpumonitor.idle = 0;
ci->cpumonitor.percent = 0;
ci->cpumonitor.popup = NULL;
ci->cpumonitor.configure = NULL;
@@ -142,17 +129,7 @@ _conf_item_get(int *id)
ci->memusage.swp_percent = 0;
ci->memusage.popup = NULL;
ci->memusage.configure = NULL;
- ci->memusage.done = EINA_FALSE;
- ci->memusage.defer = EINA_FALSE;
ci->netstatus.poll_interval = 32;
- ci->netstatus.in = 0;
- ci->netstatus.out = 0;
- ci->netstatus.inmax = 0;
- ci->netstatus.outmax = 0;
- ci->netstatus.incurrent = 0;
- ci->netstatus.outcurrent = 0;
- ci->netstatus.inpercent = 0;
- ci->netstatus.outpercent = 0;
ci->netstatus.instring = NULL;
ci->netstatus.outstring = NULL;
ci->netstatus.popup = NULL;
@@ -162,8 +139,6 @@ _conf_item_get(int *id)
ci->netstatus.outmax = 0;
ci->netstatus.receive_units = NETSTATUS_UNIT_BYTES;
ci->netstatus.send_units = NETSTATUS_UNIT_BYTES;
- ci->netstatus.done = EINA_FALSE;
- ci->netstatus.defer = EINA_FALSE;
sysinfo_config->items = eina_list_append(sysinfo_config->items, ci);
diff --git a/src/modules/sysinfo/sysinfo.h b/src/modules/sysinfo/sysinfo.h
index 466ccb4dc5..98b4c5a52b 100644
--- a/src/modules/sysinfo/sysinfo.h
+++ b/src/modules/sysinfo/sysinfo.h
@@ -193,10 +193,7 @@ struct _Config_Item
int pstate_max;
Cpu_Status *status;
Ecore_Thread *frequency_check_thread;
- Ecore_Event_Handler *handler;
Eina_List *handlers;
- Eina_Bool defer;
- Eina_Bool done;
} cpuclock;
struct
{
@@ -208,14 +205,10 @@ struct _Config_Item
Evas_Object *configure;
int poll_interval;
int percent;
- long total;
- long idle;
+ int cores;
Ecore_Thread *usage_check_thread;
- Eina_List *cores;
Eina_List *handlers;
- Eina_Bool defer;
- Eina_Bool done;
} cpumonitor;
struct
{
@@ -234,8 +227,6 @@ struct _Config_Item
unsigned long swp_used;
Ecore_Thread *usage_check_thread;
Eina_List *handlers;
- Eina_Bool defer;
- Eina_Bool done;
} memusage;
struct
{
@@ -247,20 +238,12 @@ struct _Config_Item
Netstatus_Unit receive_units;
Netstatus_Unit send_units;
int poll_interval;
- long in;
- long out;
- long incurrent;
- long outcurrent;
- long inmax;
- long outmax;
- int inpercent;
- int outpercent;
- Eina_Stringshare *instring;
- Eina_Stringshare *outstring;
+ unsigned long inmax;
+ unsigned long outmax;
Ecore_Thread *usage_check_thread;
Eina_List *handlers;
- Eina_Bool defer;
- Eina_Bool done;
+ Eina_Stringshare *instring;
+ Eina_Stringshare *outstring;
} netstatus;
struct {
Evas_Object *o_batman;
diff --git a/src/modules/sysinfo/thermal/thermal.c b/src/modules/sysinfo/thermal/thermal.c
index 91b4fbc7dd..d0744754f9 100644
--- a/src/modules/sysinfo/thermal/thermal.c
+++ b/src/modules/sysinfo/thermal/thermal.c
@@ -14,8 +14,8 @@ _thermal_thread_free(Tempthread *tth)
EINA_LIST_FREE(tth->tempdevs, s) eina_stringshare_del(s);
#endif
e_powersave_sleeper_free(tth->sleeper);
- free(tth->extn);
- free(tth);
+ E_FREE(tth->extn);
+ E_FREE(tth);
}
static void
@@ -134,44 +134,17 @@ static void
_thermal_check_notify(void *data, Ecore_Thread *th, void *msg)
{
Tempthread *tth = data;
- Instance *inst = tth->inst;
int temp = (int)((long)msg);
- if (th != inst->cfg->thermal.th) return;
- _thermal_apply(inst, temp);
+ if (th != tth->inst->cfg->thermal.th) return;
+ _thermal_apply(tth->inst, temp);
}
static void
_thermal_check_done(void *data, Ecore_Thread *th EINA_UNUSED)
{
Tempthread *tth = data;
- Instance *inst = tth->inst;
+ _thermal_thread_free(tth);
- if (inst->cfg->thermal.defer)
- {
- _thermal_thread_free(tth);
- inst->cfg->thermal.defer = EINA_FALSE;
- inst->cfg->thermal.done = EINA_TRUE;
- if (inst->cfg->esm == E_SYSINFO_MODULE_THERMAL)
- {
- sysinfo_config->items = eina_list_remove(sysinfo_config->items, inst->cfg);
- if (inst->cfg->id >= 0)
- sysinfo_instances = eina_list_remove(sysinfo_instances, inst);
- E_FREE(inst->cfg);
- E_FREE(inst);
- }
- else
- {
- if (inst->cfg->memusage.done && inst->cfg->cpumonitor.done &&
- inst->cfg->netstatus.done && inst->cfg->cpuclock.done && inst->cfg->batman.done)
- {
- sysinfo_config->items = eina_list_remove(sysinfo_config->items, inst->cfg);
- if (inst->cfg->id >= 0)
- sysinfo_instances = eina_list_remove(sysinfo_instances, inst);
- E_FREE(inst->cfg);
- E_FREE(inst);
- }
- }
- }
}
#endif
@@ -373,10 +346,8 @@ _thermal_removed_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_data)
_thermal_removed_cb, inst);
if (inst->cfg->thermal.th)
{
- inst->cfg->thermal.defer = EINA_TRUE;
ecore_thread_cancel(inst->cfg->thermal.th);
inst->cfg->thermal.th = NULL;
- return;
}
_thermal_face_shutdown(inst);
sysinfo_config->items = eina_list_remove(sysinfo_config->items, inst->cfg);
@@ -402,25 +373,10 @@ sysinfo_thermal_remove(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UN
ecore_event_handler_del(handler);
if (inst->cfg->thermal.th)
{
- inst->cfg->thermal.defer = EINA_TRUE;
ecore_thread_cancel(inst->cfg->thermal.th);
inst->cfg->thermal.th = NULL;
- return;
}
_thermal_face_shutdown(inst);
- inst->cfg->thermal.done = EINA_TRUE;
- if (inst->cfg->esm == E_SYSINFO_MODULE_SYSINFO)
- {
- if (inst->cfg->memusage.done && inst->cfg->cpumonitor.done &&
- inst->cfg->netstatus.done && inst->cfg->cpuclock.done && inst->cfg->batman.done)
- {
- sysinfo_config->items = eina_list_remove(sysinfo_config->items, inst->cfg);
- if (inst->cfg->id >= 0)
- sysinfo_instances = eina_list_remove(sysinfo_instances, inst);
- E_FREE(inst->cfg);
- E_FREE(inst);
- }
- }
}
static void
@@ -433,8 +389,6 @@ _thermal_created_cb(void *data, Evas_Object *obj, void *event_data EINA_UNUSED)
inst->cfg->thermal.temp = 900;
inst->cfg->thermal.have_temp = EINA_FALSE;
- inst->cfg->thermal.defer = EINA_FALSE;
- inst->cfg->thermal.done = EINA_FALSE;
inst->cfg->thermal.o_gadget = elm_layout_add(inst->o_main);
if (orient == E_GADGET_SITE_ORIENT_VERTICAL)
@@ -465,8 +419,6 @@ sysinfo_thermal_create(Evas_Object *parent, Instance *inst)
{
inst->cfg->thermal.temp = 900;
inst->cfg->thermal.have_temp = EINA_FALSE;
- inst->cfg->thermal.defer = EINA_FALSE;
- inst->cfg->thermal.done = EINA_FALSE;
inst->cfg->thermal.o_gadget = elm_layout_add(parent);
e_theme_edje_object_set(inst->cfg->thermal.o_gadget, "base/theme/gadget/thermal",
@@ -528,8 +480,6 @@ thermal_create(Evas_Object *parent, int *id, E_Gadget_Site_Orient orient EINA_UN
inst = E_NEW(Instance, 1);
inst->cfg = _conf_item_get(id);
*id = inst->cfg->id;
- inst->cfg->thermal.defer = EINA_FALSE;
- inst->cfg->thermal.done = EINA_FALSE;
inst->o_main = elm_box_add(parent);
E_EXPAND(inst->o_main);
evas_object_data_set(inst->o_main, "Instance", inst);
diff --git a/src/modules/sysinfo/thermal/thermal_config.c b/src/modules/sysinfo/thermal/thermal_config.c
index afd2676e37..f1ead4ed03 100644
--- a/src/modules/sysinfo/thermal/thermal_config.c
+++ b/src/modules/sysinfo/thermal/thermal_config.c
@@ -10,7 +10,7 @@ _config_close(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, voi
Instance *inst = tc->inst;
E_FREE_FUNC(inst->cfg->thermal.configure, evas_object_del);
- E_FREE_FUNC(tc, free);
+ E_FREE(tc);
e_config_save_queue();
}
diff --git a/src/modules/sysinfo/thermal/thermal_fallback.c b/src/modules/sysinfo/thermal/thermal_fallback.c
index 1135fe1da1..e236a19ee6 100644
--- a/src/modules/sysinfo/thermal/thermal_fallback.c
+++ b/src/modules/sysinfo/thermal/thermal_fallback.c
@@ -42,9 +42,9 @@ temperature_get_bus_files(const char *bus)
f = strdup(path);
if (f) result = eina_list_append(result, f);
}
- free(file);
+ E_FREE(file);
}
- free(name);
+ E_FREE(name);
}
return result;
}
@@ -228,7 +228,7 @@ init(Tempthread *tth)
* one for the default. */
break;
}
- free(name);
+ E_FREE(name);
}
break;
@@ -247,7 +247,7 @@ init(Tempthread *tth)
* one for the default. */
break;
}
- free(name);
+ E_FREE(name);
}
break;