Enlightenment CVS committal Author : raster Project : e17 Module : apps/e
Dir : e17/apps/e/src/modules/cpufreq Modified Files: e_mod_main.c e_mod_main.h Log Message: 2 pending patches in my inbox. 1. "allow overlap" patch for modules - needs better names in the gui (Allow windows to overlap maybe - as allow overlap is very vague) 2. itray module (buggy - buggy - beware. i know why. beware i said!) 3. TODO items =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/modules/cpufreq/e_mod_main.c,v retrieving revision 1.31 retrieving revision 1.32 diff -u -3 -r1.31 -r1.32 --- e_mod_main.c 7 Jan 2006 14:20:48 -0000 1.31 +++ e_mod_main.c 20 Jan 2006 04:04:13 -0000 1.32 @@ -25,6 +25,7 @@ static void _cpufreq_menu_normal(void *data, E_Menu *m, E_Menu_Item *mi); static void _cpufreq_menu_slow(void *data, E_Menu *m, E_Menu_Item *mi); static void _cpufreq_menu_very_slow(void *data, E_Menu *m, E_Menu_Item *mi); +static void _cpufreq_menu_cb_allow_overlap(void *data, E_Menu *m, E_Menu_Item *mi); static void _cpufreq_menu_restore_governor(void *data, E_Menu *m, E_Menu_Item *mi); static void _cpufreq_menu_governor(void *data, E_Menu *m, E_Menu_Item *mi); static void _cpufreq_menu_frequency(void *data, E_Menu *m, E_Menu_Item *mi); @@ -50,6 +51,8 @@ static void _cpufreq_face_cb_set_frequency(void *data, Evas_Object *o, const char *emission, const char *source); static void _cpufreq_face_cb_set_governor(void *data, Evas_Object *o, const char *emission, const char *source); +static void _cpufreq_cb_update_policy(Cpufreq *e); + static E_Config_DD *conf_edd; static E_Config_DD *conf_face_edd; @@ -141,6 +144,7 @@ #define T Config #define D conf_edd E_CONFIG_VAL(D, T, poll_time, DOUBLE); + E_CONFIG_VAL(D, T, allow_overlap, INT); E_CONFIG_LIST(D, T, faces, conf_face_edd); E_CONFIG_VAL(D, T, restore_governor, INT); E_CONFIG_VAL(D, T, governor, STR); @@ -152,8 +156,10 @@ e->conf->poll_time = 2.0; e->conf->restore_governor = 0; e->conf->governor = NULL; + e->conf->allow_overlap = 0; } E_CONFIG_LIMIT(e->conf->poll_time, 0.5, 60.0); + E_CONFIG_LIMIT(e->conf->allow_overlap, 0, 1); #ifdef __FreeBSD__ /* does e_module_dir_get(module) work correctly in linux??? - yes it does... what's wrong in bsd? */ snprintf(buf, sizeof(buf), "%s/%s/cpufreq/freqset", e_module_dir_get(module), MODULE_ARCH); @@ -209,6 +215,13 @@ _cpufreq_face_menu_new(ef); + /* Add 'Allow Overlap' option */ + mi = e_menu_item_new(ef->menu); + e_menu_item_label_set(mi, _("Allow Overlap")); + e_menu_item_check_set(mi, 1); + e_menu_item_toggle_set(mi, e->conf->allow_overlap); + e_menu_item_callback_set(mi, _cpufreq_menu_cb_allow_overlap, e); + /* Add poll time menu to this face */ mi = e_menu_item_new(ef->menu); e_menu_item_label_set(mi, _("Set Poll Time")); @@ -396,6 +409,38 @@ e_config_save_queue(); } +static void _cpufreq_cb_update_policy(Cpufreq *e) +{ + Cpufreq_Face *cf; + Evas_List *l; + E_Gadman_Policy policy; + + for (l = e->faces; l; l = l->next) + { + cf = l->data; + policy = cf->gmc->policy; + + if (e->conf->allow_overlap == 0) + policy &= ~E_GADMAN_POLICY_ALLOW_OVERLAP; + else + policy |= E_GADMAN_POLICY_ALLOW_OVERLAP; + + e_gadman_client_policy_set(cf->gmc, policy); + } +} + +static void _cpufreq_menu_cb_allow_overlap(void *data, E_Menu *m, E_Menu_Item *mi) +{ + Cpufreq *e; + + e = data; + e->conf->allow_overlap = e_menu_item_toggle_get(mi); + _cpufreq_cb_update_policy(e); + e_config_save_queue(); +} + + + static void _cpufreq_menu_restore_governor(void *data, E_Menu *m, E_Menu_Item *mi) { @@ -543,6 +588,12 @@ mn = e_menu_new(); mi = e_menu_item_new(mn); + e_menu_item_label_set(mi, _("Allow Overlap")); + e_menu_item_check_set(mi, 1); + e_menu_item_toggle_set(mi, e->conf->allow_overlap); + e_menu_item_callback_set(mi, _cpufreq_menu_cb_allow_overlap, e); + + mi = e_menu_item_new(mn); e_menu_item_label_set(mi, _("Set Poll Time")); e_menu_item_submenu_set(mi, e->config_menu_poll); @@ -861,6 +912,7 @@ { Evas_Object *o; Cpufreq_Face *ef; + E_Gadman_Policy policy; ef = E_NEW(Cpufreq_Face, 1); if (!ef) return NULL; @@ -890,9 +942,19 @@ ef->gmc = e_gadman_client_new(ef->con->gadman); e_gadman_client_domain_set(ef->gmc, "module.cpufreq", cpufreq_count++); - e_gadman_client_policy_set(ef->gmc, E_GADMAN_POLICY_ANYWHERE | - E_GADMAN_POLICY_HMOVE | E_GADMAN_POLICY_VMOVE | - E_GADMAN_POLICY_HSIZE | E_GADMAN_POLICY_VSIZE); + + policy = E_GADMAN_POLICY_ANYWHERE | + E_GADMAN_POLICY_HMOVE | + E_GADMAN_POLICY_VMOVE | + E_GADMAN_POLICY_HSIZE | + E_GADMAN_POLICY_VSIZE; + + if (owner->conf->allow_overlap == 0) + policy &= ~E_GADMAN_POLICY_ALLOW_OVERLAP; + else + policy |= E_GADMAN_POLICY_ALLOW_OVERLAP; + + e_gadman_client_policy_set(ef->gmc, policy); e_gadman_client_min_size_set(ef->gmc, 4, 4); e_gadman_client_max_size_set(ef->gmc, 128, 128); /* This module needs a slightly higher min size */ =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/modules/cpufreq/e_mod_main.h,v retrieving revision 1.7 retrieving revision 1.8 diff -u -3 -r1.7 -r1.8 --- e_mod_main.h 27 Dec 2005 17:16:58 -0000 1.7 +++ e_mod_main.h 20 Jan 2006 04:04:13 -0000 1.8 @@ -23,6 +23,7 @@ struct _Config { double poll_time; + int allow_overlap; Evas_List *faces; int restore_governor; ------------------------------------------------------- This SF.net email is sponsored by: Splunk Inc. Do you grep through log files for problems? Stop! Download the new AJAX search engine that makes searching your log files as easy as surfing the web. DOWNLOAD SPLUNK! http://sel.as-us.falkag.net/sel?cmd=lnk&kid=103432&bid=230486&dat=121642 _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs