From 678103c73b4143d63571edae9bd578dbff45d77d Mon Sep 17 00:00:00 2001 From: "Carsten Haitzler (Rasterman)" Date: Mon, 4 May 2020 22:27:27 +0100 Subject: [PATCH] cpufreq - handle multiple instances right.... don't double free... @fix --- src/modules/cpufreq/e_mod_main.c | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/src/modules/cpufreq/e_mod_main.c b/src/modules/cpufreq/e_mod_main.c index 777ecb6d2..8d14a465b 100644 --- a/src/modules/cpufreq/e_mod_main.c +++ b/src/modules/cpufreq/e_mod_main.c @@ -103,9 +103,10 @@ _gc_init(E_Gadcon *gc, const char *name, const char *id, const char *style) _cpufreq_face_update_available(inst); - cpufreq_config->handler = - ecore_event_handler_add(E_EVENT_POWERSAVE_UPDATE, - _cpufreq_event_cb_powersave, NULL); + if (!cpufreq_config->handler) + cpufreq_config->handler = + ecore_event_handler_add(E_EVENT_POWERSAVE_UPDATE, + _cpufreq_event_cb_powersave, NULL); return gcc; } @@ -120,8 +121,14 @@ _gc_shutdown(E_Gadcon_Client *gcc) evas_object_del(inst->o_cpu); free(inst); - if (cpufreq_config->handler) - ecore_event_handler_del(cpufreq_config->handler); + if (!cpufreq_config->instances) + { + if (cpufreq_config->handler) + { + ecore_event_handler_del(cpufreq_config->handler); + cpufreq_config->handler = NULL; + } + } } static void