diff --git a/src/modules/sysinfo/batman/batman.c b/src/modules/sysinfo/batman/batman.c index 1af63702d..79e06fa83 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 5622c0af4..e08c346ad 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 a04980a3c..0b840e9c0 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 82f5b343f..cc8b90e85 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 6699d0e5f..18314f328 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 c86b335e7..b59360f30 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 35dc7892c..013712ec2 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); - 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); - 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); + + 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); + _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); - 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); - 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); + + 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); + _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 187282500..7efb63707 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 cfb2af60d..84488033b 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 e25b5be3a..113d0fcb4 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 7428af59e..2cfb45237 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 55ffd39b0..319a9b0d5 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 6562c72d8..3cb81451c 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; + if (!thc->inst->cfg) return; + if (thc->inst->cfg->esm != E_SYSINFO_MODULE_MEMUSAGE && + thc->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); + 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 af85e7522..1760497c5 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 d3fea5ae3..d8109ad5b 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 e7238eca3..e8e9ad3c7 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
%s", inst->cfg->netstatus.instring, inst->cfg->netstatus.outstring); - elm_object_text_set(inst->cfg->netstatus.popup_label, text); + snprintf(text, sizeof(text), "%s
%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 87a729b6b..257434d56 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 12d404b00..81bad60b8 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 191d1ea3c..f7e92a8b8 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; + *prev_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); - } - 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 e37b8af95..8822d6e3e 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; + *prev_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); - } - eina_stringshare_replace(&inst->cfg->netstatus.outstring, rout); } diff --git a/src/modules/sysinfo/sysinfo.c b/src/modules/sysinfo/sysinfo.c index 9623652c7..17b5ced32 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 466ccb4dc..98b4c5a52 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 91b4fbc7d..d0744754f 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 afd2676e3..f1ead4ed0 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 1135fe1da..e236a19ee 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;