raster pushed a commit to branch master.

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

commit dd07427e96098e08800cd49f8fcd52f1554f1c6a
Author: Carsten Haitzler (Rasterman) <ras...@rasterman.com>
Date:   Wed Jan 6 22:19:00 2021 +0000

    music control - respct powersave for polling for mpris provider
---
 src/modules/music-control/e_mod_main.c | 41 ++++++++++++++++++++++++++++------
 1 file changed, 34 insertions(+), 7 deletions(-)

diff --git a/src/modules/music-control/e_mod_main.c 
b/src/modules/music-control/e_mod_main.c
index 8e7618ce3..28fb3b69b 100644
--- a/src/modules/music-control/e_mod_main.c
+++ b/src/modules/music-control/e_mod_main.c
@@ -7,6 +7,7 @@
 static E_Module *music_control_mod = NULL;
 static Eina_Bool was_playing_before_lock = EINA_FALSE;
 static const char _e_music_control_Name[] = N_("Music controller");
+static Ecore_Event_Handler *music_control_powersave_event_handler = NULL;
 static Eina_Bool have_player = EINA_FALSE;
 
 const Player music_player_players[] =
@@ -388,6 +389,22 @@ _poll_dbus_cb(void *data)
    return EINA_FALSE;
 }
 
+static void
+_timer_redo(E_Music_Control_Module_Context *ctxt)
+{
+   E_Powersave_Mode pm;
+   double t = 5.0;
+
+   if (ctxt->poll_timer) ecore_timer_del(ctxt->poll_timer);
+   pm = e_powersave_mode_get();
+   if (e_powersave_mode_screen_get() > pm) pm = e_powersave_mode_screen_get();
+   if      (pm >= E_POWERSAVE_MODE_FREEZE)  t = 3600.0;
+   else if (pm >= E_POWERSAVE_MODE_EXTREME) t =  600.0;
+   else if (pm >= E_POWERSAVE_MODE_HIGH)    t =   10.0;
+   else                                     t =    5.0;
+   ctxt->poll_timer = ecore_timer_add(t, _poll_dbus_cb, ctxt);
+}
+
 static void
 _bus_list_cb(void *data, const Eldbus_Message *msg, Eldbus_Pending *pending 
EINA_UNUSED)
 {
@@ -430,8 +447,7 @@ _bus_list_cb(void *data, const Eldbus_Message *msg, 
Eldbus_Pending *pending EINA
      {
         eina_stringshare_del(ctxt->dbus_name);
         ctxt->dbus_name = NULL;
-        if (ctxt->poll_timer) ecore_timer_del(ctxt->poll_timer);
-        ctxt->poll_timer = ecore_timer_add(5.0, _poll_dbus_cb, ctxt);
+        _timer_redo(ctxt);
         return;
      }
    if ((!ctxt->dbus_name) ||
@@ -447,11 +463,7 @@ _bus_list_cb(void *data, const Eldbus_Message *msg, 
Eldbus_Pending *pending EINA
              if (ctxt->poll_timer) ecore_timer_del(ctxt->poll_timer);
              ctxt->poll_timer = NULL;
           }
-        else
-          {
-             if (ctxt->poll_timer) ecore_timer_del(ctxt->poll_timer);
-             ctxt->poll_timer = ecore_timer_add(5.0, _poll_dbus_cb, ctxt);
-          }
+        else _timer_redo(ctxt);
      }
 }
 
@@ -521,6 +533,15 @@ music_control_launch(E_Music_Control_Instance *inst)
      }
 }
 
+static Eina_Bool
+_powersave_change_cb(void *data, int type EINA_UNUSED, void *event_info 
EINA_UNUSED)
+{
+   E_Music_Control_Module_Context *ctxt = data;
+
+   _timer_redo(ctxt);
+   return ECORE_CALLBACK_PASS_ON;
+}
+
 Eina_Bool
 music_control_dbus_init(E_Music_Control_Module_Context *ctxt, const char *bus)
 {
@@ -584,6 +605,9 @@ e_modapi_init(E_Module *m)
    if (ctxt->config->pause_on_desklock)
      desklock_handler = ecore_event_handler_add(E_EVENT_DESKLOCK,
                                                 _desklock_cb, ctxt);
+   music_control_powersave_event_handler =
+     ecore_event_handler_add(E_EVENT_POWERSAVE_UPDATE,
+                             _powersave_change_cb, ctxt);
    return ctxt;
 }
 
@@ -594,6 +618,9 @@ e_modapi_shutdown(E_Module *m EINA_UNUSED)
    EINA_SAFETY_ON_NULL_RETURN_VAL(music_control_mod, 0);
    ctxt = music_control_mod->data;
 
+   ecore_event_handler_del(music_control_powersave_event_handler);
+   music_control_powersave_event_handler = NULL;
+
    E_FREE_FUNC(ctxt->meta_title, eina_stringshare_del);
    E_FREE_FUNC(ctxt->meta_album, eina_stringshare_del);
    E_FREE_FUNC(ctxt->meta_artist, eina_stringshare_del);

-- 


Reply via email to