diff --git a/src/modules/temperature/e_mod_main.c b/src/modules/temperature/e_mod_main.c index a288889eb..29dcc80e0 100644 --- a/src/modules/temperature/e_mod_main.c +++ b/src/modules/temperature/e_mod_main.c @@ -92,22 +92,30 @@ _gc_init(E_Gadcon *gc, const char *name, const char *id, const char *style) #ifdef HAVE_EEZE if (inst->backend == TEMPGET) { -#endif inst->tempget_data_handler = ecore_event_handler_add(ECORE_EXE_EVENT_DATA, - _temperature_cb_exe_data, inst); + _temperature_cb_exe_data, inst); inst->tempget_del_handler = ecore_event_handler_add(ECORE_EXE_EVENT_DEL, - _temperature_cb_exe_del, inst); -#ifdef HAVE_EEZE + _temperature_cb_exe_del, inst); } else { eeze_init(); - inst->temp_poller = ecore_poller_add(ECORE_POLLER_CORE, inst->poll_interval, temperature_udev_update_poll, inst); + inst->temp_poller = + ecore_poller_add(ECORE_POLLER_CORE, inst->poll_interval, + temperature_udev_update_poll, inst); temperature_udev_update(inst); } +#else + inst->tempget_data_handler = + ecore_event_handler_add(ECORE_EXE_EVENT_DATA, + _temperature_cb_exe_data, inst); + inst->tempget_del_handler = + ecore_event_handler_add(ECORE_EXE_EVENT_DEL, + _temperature_cb_exe_del, inst); #endif + temperature_face_update_config(inst); evas_object_event_callback_add(o, EVAS_CALLBACK_MOUSE_DOWN, @@ -124,9 +132,9 @@ _gc_shutdown(E_Gadcon_Client *gcc) if (inst->tempget_exe) { - ecore_exe_terminate(inst->tempget_exe); - ecore_exe_free(inst->tempget_exe); - inst->tempget_exe = NULL; + ecore_exe_terminate(inst->tempget_exe); + ecore_exe_free(inst->tempget_exe); + inst->tempget_exe = NULL; } if (inst->tempget_data_handler) { @@ -135,8 +143,8 @@ _gc_shutdown(E_Gadcon_Client *gcc) } if (inst->tempget_del_handler) { - ecore_event_handler_del(inst->tempget_del_handler); - inst->tempget_del_handler = NULL; + ecore_event_handler_del(inst->tempget_del_handler); + inst->tempget_del_handler = NULL; } #ifdef HAVE_EEEZ_UDEV if (inst->temp_poller) @@ -168,7 +176,7 @@ static Evas_Object * _gc_icon(E_Gadcon_Client_Class *client_class, Evas *evas) { Evas_Object *o; - char buf[4096]; + char buf[PATH_MAX]; o = edje_object_add(evas); snprintf(buf, sizeof(buf), "%s/e-module-temperature.edj", @@ -202,8 +210,6 @@ _gc_id_new(E_Gadcon_Client_Class *client_class) return inst->id; } - - static void _temperature_face_cb_mouse_down(void *data, Evas *e, Evas_Object *obj, void *event_info) { @@ -230,11 +236,11 @@ _temperature_face_cb_mouse_down(void *data, Evas *e, Evas_Object *obj, void *eve e_gadcon_client_util_menu_items_append(inst->gcc, mn, 0); e_gadcon_canvas_zone_geometry_get(inst->gcc->gadcon, - &cx, &cy, NULL, NULL); + &cx, &cy, NULL, NULL); e_menu_activate_mouse(mn, - e_util_zone_current_get(e_manager_current_get()), - cx + ev->output.x, cy + ev->output.y, 1, 1, - E_MENU_POP_DIRECTION_DOWN, ev->timestamp); + e_util_zone_current_get(e_manager_current_get()), + cx + ev->output.x, cy + ev->output.y, 1, 1, + E_MENU_POP_DIRECTION_AUTO, ev->timestamp); } } @@ -282,11 +288,12 @@ _temperature_face_shutdown(const Eina_Hash *hash __UNUSED__, const void *key __U if (inst->tempdevs) { const char *s; + EINA_LIST_FREE(inst->tempdevs, s) eina_stringshare_del(s); } #endif - free(inst); + E_FREE(inst); return EINA_TRUE; } @@ -324,21 +331,21 @@ temperature_face_update_config(Config_Face *inst) ecore_poller_del(inst->temp_poller); inst->temp_poller = NULL; } -#endif - snprintf(buf, sizeof(buf), - "%s/%s/tempget %i \"%s\" %i", - e_module_dir_get(temperature_config->module), MODULE_ARCH, - inst->sensor_type, - (inst->sensor_name != NULL ? inst->sensor_name : "(null)"), - inst->poll_interval); - inst->tempget_exe = - ecore_exe_pipe_run(buf, - ECORE_EXE_PIPE_READ | - ECORE_EXE_PIPE_READ_LINE_BUFFERED | - ECORE_EXE_NOT_LEADER, inst); -#ifdef HAVE_EEZE + if (!inst->tempget_exe) + { + snprintf(buf, sizeof(buf), + "%s/%s/tempget %i \"%s\" %i", + e_module_dir_get(temperature_config->module), MODULE_ARCH, + inst->sensor_type, + (inst->sensor_name != NULL ? inst->sensor_name : "(null)"), + inst->poll_interval); + inst->tempget_exe = + ecore_exe_pipe_run(buf, ECORE_EXE_PIPE_READ | + ECORE_EXE_PIPE_READ_LINE_BUFFERED | + ECORE_EXE_NOT_LEADER, inst); + } } - else + else if (inst->backend == UDEV) { /*avoid creating a new poller if possible*/ if (inst->temp_poller) @@ -351,6 +358,20 @@ temperature_face_update_config(Config_Face *inst) temperature_udev_update_poll, inst); } } +#else + if (!inst->tempget_exe) + { + snprintf(buf, sizeof(buf), + "%s/%s/tempget %i \"%s\" %i", + e_module_dir_get(temperature_config->module), MODULE_ARCH, + inst->sensor_type, + (inst->sensor_name != NULL ? inst->sensor_name : "(null)"), + inst->poll_interval); + inst->tempget_exe = + ecore_exe_pipe_run(buf, ECORE_EXE_PIPE_READ | + ECORE_EXE_PIPE_READ_LINE_BUFFERED | + ECORE_EXE_NOT_LEADER, inst); + } #endif } diff --git a/src/modules/temperature/e_mod_main.h b/src/modules/temperature/e_mod_main.h index ae975b26f..202c59eb2 100644 --- a/src/modules/temperature/e_mod_main.h +++ b/src/modules/temperature/e_mod_main.h @@ -24,7 +24,7 @@ struct _Config_Face #ifdef HAVE_EEZE Eina_List *tempdevs; int backend; - Ecore_Poller *temp_poller; + Ecore_Poller *temp_poller; #endif int sensor_type; const char *sensor_name; @@ -61,15 +61,16 @@ typedef enum _Backend TEMPGET, UDEV } Backend; + int temperature_udev_update_poll(void *data); void temperature_udev_update(void *data); #endif EAPI extern E_Module_Api e_modapi; -EAPI void *e_modapi_init (E_Module *m); -EAPI int e_modapi_shutdown (E_Module *m); -EAPI int e_modapi_save (E_Module *m); +EAPI void *e_modapi_init(E_Module *m); +EAPI int e_modapi_shutdown(E_Module *m); +EAPI int e_modapi_save(E_Module *m); int _temperature_cb_exe_data(void *data, int type, void *event); int _temperature_cb_exe_del(void *data, int type, void *event); diff --git a/src/modules/temperature/e_mod_tempget.c b/src/modules/temperature/e_mod_tempget.c index d27d05805..098feed04 100644 --- a/src/modules/temperature/e_mod_tempget.c +++ b/src/modules/temperature/e_mod_tempget.c @@ -1,7 +1,6 @@ #include "e.h" #include "e_mod_main.h" - int _temperature_cb_exe_data(void *data, int type, void *event) {