(defun squeeze-control-listen ()
(squeeze-send-string "listen 1"))
+(defun squeeze-accept-process-output ()
+ (while (accept-process-output (get-buffer-process "*squeeze*") 0.1 nil t)))
+
(defun squeeze-control-refresh ()
(interactive)
(let ((squeeze-control-inhibit-display t))
(squeeze-control-query-players)
- (accept-process-output (get-buffer-process "*squeeze*"))
+ (squeeze-accept-process-output)
(squeeze-control-query-syncgroups)
- (accept-process-output (get-buffer-process "*squeeze*"))
(dolist (player squeeze-players)
(squeeze-control-query-power (squeeze-player-playerid player))
- (accept-process-output (get-buffer-process "*squeeze*"))
- (squeeze-control-query-mixer-volume (squeeze-player-playerid player))
- (accept-process-output (get-buffer-process "*squeeze*"))))
+ (squeeze-control-query-mixer-volume (squeeze-player-playerid player))))
+ (squeeze-accept-process-output)
(squeeze-control-display-players))
(defvar squeeze-control-mixer-map
(defun squeeze-control-display-players ()
(interactive)
- (cond
- (squeeze-control-display-syncgroups
- (with-current-buffer (get-buffer-create "*squeeze-control*")
+ (with-current-buffer (get-buffer-create "*squeeze-control*")
+ (let ((saved (point)))
(squeeze-control-mode)
(read-only-mode -1)
(erase-buffer)
- (let ((syncgroups squeeze-syncgroups)
- (seen))
- (while syncgroups
- (let ((names (getf syncgroups :names))
- (members (split-string (getf syncgroups :members) ",")))
- (insert (propertize names 'face 'squeeze-syncgroup-face) "\n")
- (dolist (member members)
- (let ((player (squeeze-find-player member)))
- (squeeze-control-insert-player player)
- (push player seen))))
- (setq syncgroups (cddddr syncgroups)))
- (insert (propertize "No syncgroup" 'face 'squeeze-syncgroup-face) "\n")
+ (cond
+ (squeeze-control-display-syncgroups
+ (let ((syncgroups squeeze-syncgroups)
+ (seen))
+ (while syncgroups
+ (let ((names (getf syncgroups :names))
+ (members (split-string (getf syncgroups :members) ",")))
+ (insert (propertize names 'face 'squeeze-syncgroup-face) "\n")
+ (dolist (member members)
+ (let ((player (squeeze-find-player member)))
+ (squeeze-control-insert-player player)
+ (push player seen))))
+ (setq syncgroups (cddddr syncgroups)))
+ (insert (propertize "No syncgroup" 'face 'squeeze-syncgroup-face) "\n")
+ (dolist (player squeeze-players)
+ (unless (member player seen)
+ (squeeze-control-insert-player player)))))
+ (t
(dolist (player squeeze-players)
- (unless (member player seen)
- (squeeze-control-insert-player player))))))
- (t
- (with-current-buffer (get-buffer-create "*squeeze-control*")
- (squeeze-control-mode)
- (read-only-mode -1)
- (erase-buffer)
- (dolist (player squeeze-players)
- (squeeze-control-insert-player player))
- (read-only-mode 1)))))
+ (squeeze-control-insert-player player))
+ (read-only-mode 1)))
+ (goto-char saved))))
(cl-defstruct (squeeze-player (:constructor squeeze-make-player))
playerindex playerid uuid ip name model isplayer displaytype canpoweroff connected power volume)
(startpos (match-end 0)))
(unless countpos
(message "no count found in players line"))
- (let ((count (parse-integer string (match-beginning 1) (match-end 1)))
+ (let ((count (string-to-number (substring string (match-beginning 1) (match-end 1))))
result endpos)
(dotimes (i (1- count))
(setq endpos (progn (string-match " connected%3A[0-1] " string startpos)