Enlightenment: Sysinfo gadgets - Remove temporary gadgets correctly.

This commit is contained in:
Stephen 'Okra' Houston 2017-01-11 09:27:43 -06:00
parent ddb9f99692
commit 2f75513396
8 changed files with 65 additions and 20 deletions

View File

@ -417,7 +417,7 @@ _batman_removed_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_data)
if (inst->o_main != event_data) return;
#if defined(HAVE_EEZE)
#ifdef HAVE_EEZE
_batman_udev_stop(inst);
#elif defined __OpenBSD__ || defined __DragonFly__ || defined __FreeBSD__ || defined __NetBSD__
_batman_sysctl_stop();
@ -431,13 +431,17 @@ _batman_removed_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_data)
eeze_shutdown();
#endif
evas_object_event_callback_del_full(inst->o_main, EVAS_CALLBACK_DEL, sysinfo_batman_remove, data);
sysinfo_config->items = eina_list_remove(sysinfo_config->items, inst->cfg);
E_FREE(inst->cfg);
}
void
sysinfo_batman_remove(Instance *inst)
sysinfo_batman_remove(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_data EINA_UNUSED)
{
Instance *inst = data;
#ifdef HAVE_EEZE
_batman_udev_stop(inst);
#elif defined __OpenBSD__ || defined __DragonFly__ || defined __FreeBSD__ || defined __NetBSD__
@ -549,6 +553,7 @@ batman_create(Evas_Object *parent, int *id, E_Gadget_Site_Orient orient EINA_UNU
evas_object_size_hint_aspect_set(inst->o_main, EVAS_ASPECT_CONTROL_BOTH, 1, 1);
evas_object_smart_callback_add(parent, "gadget_created", _batman_created_cb, inst);
evas_object_smart_callback_add(parent, "gadget_removed", _batman_removed_cb, inst);
evas_object_event_callback_add(inst->o_main, EVAS_CALLBACK_DEL, sysinfo_batman_remove, inst);
evas_object_show(inst->o_main);
#ifdef HAVE_EEZE

View File

@ -767,7 +767,7 @@ _cpuclock_removed_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_data)
if (inst->o_main != event_data) return;
if (inst->cfg->cpuclock.handler)
if (inst->cfg->cpuclock.handler)
ecore_event_handler_del(inst->cfg->cpuclock.handler);
if (inst->cfg->cpuclock.frequency_check_thread)
@ -780,13 +780,17 @@ _cpuclock_removed_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_data)
eina_stringshare_del(inst->cfg->cpuclock.governor);
if (inst->cfg->cpuclock.status) _cpuclock_status_free(inst->cfg->cpuclock.status);
evas_object_event_callback_del_full(inst->o_main, EVAS_CALLBACK_DEL, sysinfo_cpuclock_remove, data);
sysinfo_config->items = eina_list_remove(sysinfo_config->items, inst->cfg);
E_FREE(inst->cfg);
}
void
sysinfo_cpuclock_remove(Instance *inst)
sysinfo_cpuclock_remove(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_data EINA_UNUSED)
{
Instance *inst = data;
if (inst->cfg->cpuclock.handler)
ecore_event_handler_del(inst->cfg->cpuclock.handler);
@ -905,6 +909,7 @@ cpuclock_create(Evas_Object *parent, int *id, E_Gadget_Site_Orient orient EINA_U
evas_object_size_hint_aspect_set(inst->o_main, EVAS_ASPECT_CONTROL_BOTH, 1, 1);
evas_object_smart_callback_add(parent, "gadget_created", _cpuclock_created_cb, inst);
evas_object_smart_callback_add(parent, "gadget_removed", _cpuclock_removed_cb, inst);
evas_object_event_callback_add(inst->o_main, EVAS_CALLBACK_DEL, sysinfo_cpuclock_remove, inst);
evas_object_show(inst->o_main);
if (inst->cfg->id < 0) return inst->o_main;

View File

@ -136,13 +136,16 @@ _cpumonitor_removed_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_dat
evas_object_del(core->layout);
E_FREE_FUNC(core, free);
}
evas_object_event_callback_del_full(inst->o_main, EVAS_CALLBACK_DEL, sysinfo_cpumonitor_remove, data);
sysinfo_config->items = eina_list_remove(sysinfo_config->items, inst->cfg);
E_FREE(inst->cfg);
}
void
sysinfo_cpumonitor_remove(Instance *inst)
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;
if (inst->cfg->cpumonitor.usage_check_thread)
@ -280,6 +283,7 @@ cpumonitor_create(Evas_Object *parent, int *id, E_Gadget_Site_Orient orient EINA
E_EXPAND(inst->o_main);
evas_object_smart_callback_add(parent, "gadget_created", _cpumonitor_created_cb, inst);
evas_object_smart_callback_add(parent, "gadget_removed", _cpumonitor_removed_cb, inst);
evas_object_event_callback_add(inst->o_main, EVAS_CALLBACK_DEL, sysinfo_cpumonitor_remove, inst);
evas_object_show(inst->o_main);
if (inst->cfg->id < 0) return inst->o_main;

View File

@ -92,14 +92,17 @@ _memusage_removed_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_data)
ecore_thread_cancel(inst->cfg->memusage.usage_check_thread);
inst->cfg->memusage.usage_check_thread = NULL;
}
evas_object_event_callback_del_full(inst->o_main, EVAS_CALLBACK_DEL, sysinfo_memusage_remove, data);
sysinfo_config->items = eina_list_remove(sysinfo_config->items, inst->cfg);
E_FREE(inst->cfg);
}
void
sysinfo_memusage_remove(Instance *inst)
sysinfo_memusage_remove(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_data EINA_UNUSED)
{
Instance *inst = data;
if (inst->cfg->memusage.usage_check_thread)
{
ecore_thread_cancel(inst->cfg->memusage.usage_check_thread);
@ -224,6 +227,7 @@ memusage_create(Evas_Object *parent, int *id, E_Gadget_Site_Orient orient EINA_U
E_EXPAND(inst->o_main);
evas_object_smart_callback_add(parent, "gadget_created", _memusage_created_cb, inst);
evas_object_smart_callback_add(parent, "gadget_removed", _memusage_removed_cb, inst);
evas_object_event_callback_add(inst->o_main, EVAS_CALLBACK_DEL, sysinfo_memusage_remove, inst);
evas_object_show(inst->o_main);
if (inst->cfg->id < 0) return inst->o_main;

View File

@ -105,14 +105,17 @@ _netstatus_removed_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_data
ecore_thread_cancel(inst->cfg->netstatus.usage_check_thread);
inst->cfg->netstatus.usage_check_thread = NULL;
}
evas_object_event_callback_del_full(inst->o_main, EVAS_CALLBACK_DEL, sysinfo_netstatus_remove, data);
sysinfo_config->items = eina_list_remove(sysinfo_config->items, inst->cfg);
E_FREE(inst->cfg);
}
void
sysinfo_netstatus_remove(Instance *inst)
sysinfo_netstatus_remove(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_data EINA_UNUSED)
{
Instance *inst = data;
if (inst->cfg->netstatus.usage_check_thread)
{
ecore_thread_cancel(inst->cfg->netstatus.usage_check_thread);
@ -193,6 +196,7 @@ netstatus_create(Evas_Object *parent, int *id, E_Gadget_Site_Orient orient EINA_
evas_object_size_hint_aspect_set(inst->o_main, EVAS_ASPECT_CONTROL_BOTH, 1, 1);
evas_object_smart_callback_add(parent, "gadget_created", _netstatus_created_cb, inst);
evas_object_smart_callback_add(parent, "gadget_removed", _netstatus_removed_cb, inst);
evas_object_event_callback_add(inst->o_main, EVAS_CALLBACK_DEL, sysinfo_netstatus_remove, inst);
evas_object_show(inst->o_main);
if (inst->cfg->id < 0) return inst->o_main;

View File

@ -1,5 +1,7 @@
#include "sysinfo.h"
static void _sysinfo_deleted_cb(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_data EINA_UNUSED);
static void
_sysinfo_removed_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_data)
{
@ -7,17 +9,32 @@ _sysinfo_removed_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_data)
if (inst->o_main != event_data) return;
sysinfo_batman_remove(inst);
sysinfo_thermal_remove(inst);
sysinfo_cpuclock_remove(inst);
sysinfo_cpumonitor_remove(inst);
sysinfo_memusage_remove(inst);
sysinfo_netstatus_remove(inst);
sysinfo_batman_remove(inst, NULL, NULL, NULL);
sysinfo_thermal_remove(inst, NULL, NULL, NULL);
sysinfo_cpuclock_remove(inst, NULL, NULL, NULL);
sysinfo_cpumonitor_remove(inst, NULL, NULL, NULL);
sysinfo_memusage_remove(inst, NULL, NULL, NULL);
sysinfo_netstatus_remove(inst, NULL, NULL, NULL);
evas_object_event_callback_del_full(inst->o_main, EVAS_CALLBACK_DEL, _sysinfo_deleted_cb, data);
sysinfo_config->items = eina_list_remove(sysinfo_config->items, inst->cfg);
E_FREE(inst->cfg);
}
static void
_sysinfo_deleted_cb(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_data EINA_UNUSED)
{
Instance *inst = data;
sysinfo_batman_remove(inst, NULL, NULL, NULL);
sysinfo_thermal_remove(inst, NULL, NULL, NULL);
sysinfo_cpuclock_remove(inst, NULL, NULL, NULL);
sysinfo_cpumonitor_remove(inst, NULL, NULL, NULL);
sysinfo_memusage_remove(inst, NULL, NULL, NULL);
sysinfo_netstatus_remove(inst, NULL, NULL, NULL);
}
static void
_sysinfo_created_cb(void *data, Evas_Object *obj, void *event_data EINA_UNUSED)
{
@ -120,6 +137,7 @@ sysinfo_create(Evas_Object *parent, int *id, E_Gadget_Site_Orient orient EINA_UN
elm_object_style_set(inst->o_main, "no_inset_shadow");
E_EXPAND(inst->o_main);
evas_object_size_hint_aspect_set(inst->o_main, EVAS_ASPECT_CONTROL_BOTH, 1, 1);
evas_object_event_callback_add(inst->o_main, EVAS_CALLBACK_DEL, _sysinfo_deleted_cb, inst);
evas_object_show(inst->o_main);
evas_object_smart_callback_add(parent, "gadget_created", _sysinfo_created_cb, inst);

View File

@ -235,12 +235,12 @@ EINTERN Evas_Object *sysinfo_cpumonitor_create(Evas_Object *parent, Instance *in
EINTERN Evas_Object *sysinfo_memusage_create(Evas_Object *parent, Instance *inst);
EINTERN Evas_Object *sysinfo_netstatus_create(Evas_Object *parent, Instance *inst);
EINTERN void sysinfo_batman_remove(Instance *inst);
EINTERN void sysinfo_thermal_remove(Instance *inst);
EINTERN void sysinfo_cpuclock_remove(Instance *inst);
EINTERN void sysinfo_cpumonitor_remove(Instance *inst);
EINTERN void sysinfo_memusage_remove(Instance *inst);
EINTERN void sysinfo_netstatus_remove(Instance *inst);
EINTERN void sysinfo_batman_remove(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_data EINA_UNUSED);
EINTERN void sysinfo_thermal_remove(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_data EINA_UNUSED);
EINTERN void sysinfo_cpuclock_remove(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_data EINA_UNUSED);
EINTERN void sysinfo_cpumonitor_remove(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_data EINA_UNUSED);
EINTERN void sysinfo_memusage_remove(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_data EINA_UNUSED);
EINTERN void sysinfo_netstatus_remove(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_data EINA_UNUSED);
extern Config *sysinfo_config;
extern Eina_List *sysinfo_instances;

View File

@ -195,13 +195,17 @@ _thermal_removed_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_data)
eeze_shutdown();
#endif
evas_object_event_callback_del_full(inst->o_main, EVAS_CALLBACK_DEL, sysinfo_thermal_remove, data);
sysinfo_config->items = eina_list_remove(sysinfo_config->items, inst->cfg);
E_FREE(inst->cfg);
}
void
sysinfo_thermal_remove(Instance *inst)
sysinfo_thermal_remove(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_data EINA_UNUSED)
{
Instance *inst = data;
_thermal_face_shutdown(inst);
#ifdef HAVE_EEZE
@ -290,6 +294,7 @@ thermal_create(Evas_Object *parent, int *id, E_Gadget_Site_Orient orient EINA_UN
evas_object_size_hint_aspect_set(inst->o_main, EVAS_ASPECT_CONTROL_BOTH, 1, 1);
evas_object_smart_callback_add(parent, "gadget_created", _thermal_created_cb, inst);
evas_object_smart_callback_add(parent, "gadget_removed", _thermal_removed_cb, inst);
evas_object_event_callback_add(inst->o_main, EVAS_CALLBACK_DEL, sysinfo_thermal_remove, inst);
evas_object_show(inst->o_main);
#ifdef HAVE_EEZE