Christophe Weblog Wiki Code Publications Music
we might not always get a squeeze-playerid property
[squeeze-el.git] / squeeze.el
index c64eaef2ec337ddaf540cfdeec57f4e882cb649f..95bfdf140f358be70e5d1de1e16a4e825629fb68 100644 (file)
@@ -61,7 +61,7 @@
 
 (defun squeeze-update-mixer-volume (player value)
   (let ((current (squeeze-player-volume player)))
-    (if (string-match "^[+-]" value)
+    (if (string-match "^[-+]" value)
         (when current
           (setf (squeeze-player-volume player) (+ current (string-to-number value))))
       (setf (squeeze-player-volume player) (string-to-number value)))))
@@ -80,8 +80,8 @@
               (player (squeeze-find-player id)))
           (squeeze-update-power player state))
         t)
-       ((string-match "^mixer volume \\([+-]?[0-9]*\\)" substring)
-        (let ((value (match-string 1 substring))
+       ((string-match "^mixer volume \\(\\(?:-\\|%2B\\)?[0-9]*\\)" substring)
+        (let ((value (url-unhex-string (match-string 1 substring)))
               (player (squeeze-find-player id)))
           (squeeze-update-mixer-volume player value))
         t))))))
   (interactive)
   (unless id
     (setq id (get-text-property (point) 'squeeze-playerid)))
-  (comint-send-string (get-buffer-process "*squeeze*") (format "%s power ?\n" id)))
+  (when id
+    (comint-send-string (get-buffer-process "*squeeze*") (format "%s power ?\n" id))))
 
 (defun squeeze-control-volume-up (&optional id inc)
   (interactive)
   (unless inc (setq inc 5))
   (unless id
     (setq id (get-text-property (point) 'squeeze-playerid)))
-  (comint-send-string (get-buffer-process "*squeeze*") (format "%s mixer volume %+d\n" id inc)))
+  (when id
+    (comint-send-string (get-buffer-process "*squeeze*") (format "%s mixer volume %+d\n" id inc))))
 
 (defun squeeze-control-volume-down (&optional id inc)
   (interactive)
   (unless inc (setq inc 5))
   (unless id
     (setq id (get-text-property (point) 'squeeze-playerid)))
-  (comint-send-string (get-buffer-process "*squeeze*") (format "%s mixer volume %+d\n" id (- inc))))
+  (when id
+    (comint-send-string (get-buffer-process "*squeeze*") (format "%s mixer volume %+d\n" id (- inc)))))
 
 (defun squeeze-control-query-mixer-volume (&optional id)
   (interactive)
   (unless id
     (setq id (get-text-property (point) 'squeeze-playerid)))
-  (comint-send-string (get-buffer-process "*squeeze*") (format "%s mixer volume ?\n" id)))
+  (when id
+    (comint-send-string (get-buffer-process "*squeeze*") (format "%s mixer volume ?\n" id))))
 
 (defun squeeze-control-player-face (player)
   (let ((power (squeeze-player-power player)))