branch: externals/emms
commit 1b1187b6c55b06685437fda5fc4fea41fe45be5f
Author: Fran Burstall <fran.burst...@gmail.com>
Commit: Fran Burstall <fran.burst...@gmail.com>

    * emms-mpris.el: Rework commentary
    
    Replace rambling by strategy!
---
 emms-mpris.el | 36 ++++++++++++++----------------------
 1 file changed, 14 insertions(+), 22 deletions(-)

diff --git a/emms-mpris.el b/emms-mpris.el
index 7dba90ee63..29f06669df 100644
--- a/emms-mpris.el
+++ b/emms-mpris.el
@@ -39,8 +39,7 @@
 ;; - Shuffle
 ;; - LoopStatus
 ;; The issue with the last two is how to allow them to be set both
-;; over dbus and via lisp/emms-ui.  I do not know how to do this in a
-;; simple way.
+;; over dbus and via lisp/emms-ui.  See below for an implementation strategy.
 
 ;; TODO:
 ;;   * Shuffle: value is emms-random-playlist and
@@ -54,26 +53,19 @@
 ;; NEXT: think through how setting Shuffle or LoopStatus should work:
 ;; How can shuffle be set and what should happen when it does?
 ;; 1. Can be set over dbus and then a PropertiesChanged signal is
-;; fired.  This should provoke emms into changing state.  This is part
-;; of a general story: we have d-bus state and emms-state and the
-;; question is how to keep them in sync.
-;; Change in d-bus state (via dbus-set-property called from a client
-;; or wherever): this fires a PropertiesChanged signal to which emms
-;; should respond to change its state.  So we need a signal handler
-;; listening.
-;; Change in emms-state (from Lisp or emms UI): this should trigger a
-;; change in d-bus state via dbus-set-property.  This in turn emits
-;; the signal to which the handler must respond without creating a
-;; loop.  This last requirement is the heart of the matter.
-;; Strategies:
-;; 1. Advise the state changing functions in emms to only change the
-;; dbus state and then let the signal handler bring everything up to
-;; date using d-bus state as the source of truth.
-;; Pros:
-;; - Easy to reason about
-;; Cons:
-;; - Lots of advice to keep track of
-;; 2. Have a second signal internal to us which is fired from emms hooks.
+;; fired.  This should provoke emms into changing state.
+;; 2.  The user can also change state from lisp or the EMMS UI and then we
+;; need to bring the dbus state up to date.
+;; All this without provoking a loop.
+;;
+;; Here is a strategy:
+;; - Have a global flag usually set to t 
+;; - If Shuffle changes from dbus, have a signal handler react to
+;; change emms state if flag is t, otherwise do nothing except reset
+;; flag to t.
+;; - Advise the emms shuffle function to end by changing dbus state
+;; via Properties.Set and setting the flag to nil.
+
 
 
 ;;; Code:

Reply via email to