raster pushed a commit to branch master.

http://git.enlightenment.org/core/enlightenment.git/commit/?id=c92f75b52dbb853242e2492e8ed403fef74abe2f

commit c92f75b52dbb853242e2492e8ed403fef74abe2f
Author: Carsten Haitzler (Rasterman) <ras...@rasterman.com>
Date:   Sat Apr 17 12:30:59 2021 +0100

    cpufreq - fix powersave cpufreq restore to normal governor
    
    @fix
---
 src/modules/cpufreq/e_mod_main.c | 43 +++++++++++++++++++++++++++++-----------
 1 file changed, 31 insertions(+), 12 deletions(-)

diff --git a/src/modules/cpufreq/e_mod_main.c b/src/modules/cpufreq/e_mod_main.c
index e4fb2614f..3644886c2 100644
--- a/src/modules/cpufreq/e_mod_main.c
+++ b/src/modules/cpufreq/e_mod_main.c
@@ -1181,12 +1181,15 @@ _cpufreq_event_cb_powersave(void *data EINA_UNUSED, int 
type EINA_UNUSED, void *
    Eina_List *l;
    Eina_Bool has_powersave = EINA_FALSE;
    Eina_Bool has_conservative = EINA_FALSE;
+// don't use these at this point...
+//   Eina_Bool has_ondemand = EINA_FALSE;
+//   Eina_Bool has_interactive = EINA_FALSE;
+   const char *gov;
 
+   printf("PWSV: auto=%i\n", cpufreq_config->auto_powersave);
    if (!cpufreq_config->auto_powersave) return ECORE_CALLBACK_PASS_ON;
 
    ev = event;
-   if (!cpufreq_config->status->orig_governor)
-     cpufreq_config->status->orig_governor = 
eina_stringshare_add(cpufreq_config->status->cur_governor);
 
    for (l = cpufreq_config->status->governors; l; l = l->next)
      {
@@ -1194,34 +1197,50 @@ _cpufreq_event_cb_powersave(void *data EINA_UNUSED, int 
type EINA_UNUSED, void *
           has_conservative = EINA_TRUE;
         else if (!strcmp(l->data, "powersave"))
           has_powersave = EINA_TRUE;
-        else if (!strcmp(l->data, "interactive"))
-          has_powersave = EINA_TRUE;
+// don't use these at this point...
+//        else if (!strcmp(l->data, "ondemand"))
+//          has_ondemand = EINA_TRUE;
+//        else if (!strcmp(l->data, "interactive"))
+//          has_interactive = EINA_TRUE;
      }
 
    switch (ev->mode)
      {
       case E_POWERSAVE_MODE_NONE:
+        printf("PWSV: none\n");
       case E_POWERSAVE_MODE_LOW:
-        _cpufreq_set_governor(cpufreq_config->status->orig_governor);
-        eina_stringshare_del(cpufreq_config->status->orig_governor);
-        cpufreq_config->status->orig_governor = NULL;
+        printf("PWSV: low - orig=%s\n", cpufreq_config->governor);
+        gov = cpufreq_config->status->orig_governor;
+        if (!gov) gov = cpufreq_config->governor;
+        eina_stringshare_replace(&(cpufreq_config->status->orig_governor), 
NULL);
+        if (gov) _cpufreq_set_governor(gov);
         break;
 
       case E_POWERSAVE_MODE_MEDIUM:
+        printf("PWSV: med\n");
       case E_POWERSAVE_MODE_HIGH:
-        if ((cpufreq_config->powersave_governor) || (has_conservative))
+        printf("PWSV: hi\n");
+        eina_stringshare_replace(&(cpufreq_config->status->orig_governor),
+                                 cpufreq_config->status->cur_governor);
+        if (cpufreq_config->powersave_governor)
           {
-             if (cpufreq_config->powersave_governor)
-               _cpufreq_set_governor(cpufreq_config->powersave_governor);
-             else
-               _cpufreq_set_governor("conservative");
+             _cpufreq_set_governor(cpufreq_config->powersave_governor);
+             break;
+          }
+        else if (has_conservative)
+          {
+             _cpufreq_set_governor("conservative");
              break;
           }
         EINA_FALLTHROUGH;
         /* no break */
 
       case E_POWERSAVE_MODE_EXTREME:
+        printf("PWSV: extreme\n");
       case E_POWERSAVE_MODE_FREEZE:
+        printf("PWSV: freeze\n");
+        eina_stringshare_replace(&(cpufreq_config->status->orig_governor),
+                                 cpufreq_config->status->cur_governor);
         if (has_powersave)
           _cpufreq_set_governor("powersave");
         break;

-- 


Reply via email to