From 167bc53a57cdb6f0280660dc860459a0c4a4ee8a Mon Sep 17 00:00:00 2001 From: Carsten Haitzler Date: Wed, 12 Mar 2008 05:43:36 +0000 Subject: [PATCH] batery module now playes with e's powersave api :) SVN revision: 33989 --- src/bin/e_actions.h | 2 +- src/bin/e_pointer.c | 42 ++++++++++++++++++++++++++------ src/bin/e_powersave.c | 2 ++ src/modules/battery/e_mod_main.c | 13 ++++++++++ 4 files changed, 50 insertions(+), 9 deletions(-) diff --git a/src/bin/e_actions.h b/src/bin/e_actions.h index 581f4d763..d19a8b99f 100644 --- a/src/bin/e_actions.h +++ b/src/bin/e_actions.h @@ -54,7 +54,7 @@ EAPI E_Action *e_action_add(const char *name); EAPI void e_action_del(const char *name); EAPI E_Action *e_action_find(const char *name); -EAPI void e_action_predef_name_set(const char *act_grp, const char *act_name, const char *act_cmd, const char *act_params, const char *param_example, int editable); +EAPI void e_action_predef_name_set(const char *act_grp, const char *act_name, const char *act_cmd, const char *act_params, const char *param_example, int editable); EAPI void e_action_predef_name_del(const char *act_grp, const char *act_name); EAPI void e_action_predef_name_all_del(void); EAPI Evas_List *e_action_groups_get(void); diff --git a/src/bin/e_pointer.c b/src/bin/e_pointer.c index 6e48f759f..e6e1ef2d3 100644 --- a/src/bin/e_pointer.c +++ b/src/bin/e_pointer.c @@ -490,6 +490,7 @@ _e_pointer_active_handle(E_Pointer *p) edje_object_signal_emit(p->pointer_object, "e,state,mouse,active", "e"); p->idle = 0; } + if (e_powersave_mode_get() >= E_POWERSAVE_MODE_MEDIUM) return; /* and scedule a pre-idle check in 1 second if no more events happen */ p->idle_timer = ecore_timer_add(1.0, _e_pointer_cb_idle_timer_pre, p); } @@ -506,8 +507,11 @@ _e_pointer_cb_mouse_down(void *data, int type, void *event) { p = l->data; _e_pointer_active_handle(p); - if (p->pointer_object) - edje_object_signal_emit(p->pointer_object, "e,action,mouse,down", "e"); + if (e_powersave_mode_get() < E_POWERSAVE_MODE_EXTREME) + { + if (p->pointer_object) + edje_object_signal_emit(p->pointer_object, "e,action,mouse,down", "e"); + } } return 1; } @@ -524,8 +528,11 @@ _e_pointer_cb_mouse_up(void *data, int type, void *event) { p = l->data; _e_pointer_active_handle(p); - if (p->pointer_object) - edje_object_signal_emit(p->pointer_object, "e,action,mouse,up", "e"); + if (e_powersave_mode_get() < E_POWERSAVE_MODE_EXTREME) + { + if (p->pointer_object) + edje_object_signal_emit(p->pointer_object, "e,action,mouse,up", "e"); + } } return 1; } @@ -542,8 +549,11 @@ _e_pointer_cb_mouse_move(void *data, int type, void *event) { p = l->data; _e_pointer_active_handle(p); - if (p->pointer_object) - edje_object_signal_emit(p->pointer_object, "e,action,mouse,move", "e"); + if (e_powersave_mode_get() < E_POWERSAVE_MODE_HIGH) + { + if (p->pointer_object) + edje_object_signal_emit(p->pointer_object, "e,action,mouse,move", "e"); + } } return 1; } @@ -560,8 +570,11 @@ _e_pointer_cb_mouse_wheel(void *data, int type, void *event) { p = l->data; _e_pointer_active_handle(p); - if (p->pointer_object) - edje_object_signal_emit(p->pointer_object, "e,action,mouse,wheel", "e"); + if (e_powersave_mode_get() < E_POWERSAVE_MODE_EXTREME) + { + if (p->pointer_object) + edje_object_signal_emit(p->pointer_object, "e,action,mouse,wheel", "e"); + } } return 1; } @@ -586,6 +599,14 @@ _e_pointer_cb_idle_timer_wait(void *data) E_Pointer *p; p = data; + if (e_powersave_mode_get() >= E_POWERSAVE_MODE_MEDIUM) + { + if (p->idle_poller) + ecore_poller_del(p->idle_poller); + p->idle_poller = NULL; + p->idle_timer = NULL; + return 0; + } if (!p->idle_poller) p->idle_poller = ecore_poller_add(ECORE_POLLER_CORE, 64, _e_pointer_cb_idle_poller, p); @@ -600,6 +621,11 @@ _e_pointer_cb_idle_poller(void *data) int x, y; p = data; + if (e_powersave_mode_get() >= E_POWERSAVE_MODE_MEDIUM) + { + p->idle_poller = NULL; + return 0; + } /* check if pointer actually moved since the 1 second post-mouse move idle * pre-timer that fetches the position */ ecore_x_pointer_xy_get(p->win, &x, &y); diff --git a/src/bin/e_powersave.c b/src/bin/e_powersave.c index 4d5d725c0..78ce201aa 100644 --- a/src/bin/e_powersave.c +++ b/src/bin/e_powersave.c @@ -96,6 +96,8 @@ e_powersave_mode_set(E_Powersave_Mode mode) { if (mode < powersave_mode_min) mode = powersave_mode_min; else if (mode > powersave_mode_max) mode = powersave_mode_max; + if (powersave_mode == mode) return; + printf("CHANGE PW SAVE MODE TO %i / %i\n", (int)mode, E_POWERSAVE_MODE_EXTREME); powersave_mode = mode; _e_powersave_mode_eval(); } diff --git a/src/modules/battery/e_mod_main.c b/src/modules/battery/e_mod_main.c index d1752c543..077b9b398 100644 --- a/src/modules/battery/e_mod_main.c +++ b/src/modules/battery/e_mod_main.c @@ -414,7 +414,20 @@ _battery_cb_exe_data(void *data, int type, void *event) edje_object_part_text_set(inst->o_battery, "e.text.time", buf); } } + if (!have_battery) + e_powersave_mode_set(E_POWERSAVE_MODE_LOW); + else + { + if ((have_power) || (full > 95)) + e_powersave_mode_set(E_POWERSAVE_MODE_LOW); + else if (full > 30) + e_powersave_mode_set(E_POWERSAVE_MODE_HIGH); + else + e_powersave_mode_set(E_POWERSAVE_MODE_EXTREME); + } } + else + e_powersave_mode_set(E_POWERSAVE_MODE_LOW); battery_config->full = full; battery_config->time_left = time_left; battery_config->have_battery = have_battery;