forked from enlightenment/enlightenment
Sysinfo Gadget: More thread vs object lifetime work: Make threads no longer dependent on the main loop objects and vice versa.
This commit is contained in:
parent
139045c120
commit
5370793399
|
@ -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);
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
||||
|
|
|
@ -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->inst->cfg->cpumonitor.cores, core)
|
||||
EINA_LIST_FREE(thc->cores, core)
|
||||
{
|
||||
evas_object_del(core->layout);
|
||||
E_FREE_FUNC(core, free);
|
||||
E_FREE(core);
|
||||
}
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
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);
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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,14 +139,44 @@ _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
|
||||
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);
|
||||
|
@ -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,6 +252,17 @@ _netstatus_config_updated(Instance *inst)
|
|||
thc->inst = inst;
|
||||
thc->sleeper = e_powersave_sleeper_new();
|
||||
thc->interval = inst->cfg->netstatus.poll_interval;
|
||||
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,
|
||||
|
@ -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;
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
@ -18,9 +18,6 @@ _sysinfo_removed_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_data)
|
|||
evas_object_smart_callback_del_full(e_gadget_site_get(obj), "gadget_removed", _sysinfo_removed_cb, inst);
|
||||
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)
|
||||
|
@ -28,7 +25,6 @@ _sysinfo_removed_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_data)
|
|||
E_FREE(inst->cfg);
|
||||
E_FREE(inst);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -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);
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
||||
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);
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
Loading…
Reference in New Issue