-;;; mpg123 process
-;;
-
-(defvar emus-proc-in-use nil)
-
-(defun emus-get-process ()
- "Return current or new mpg123 process."
- (let* ((emus-process-raw (get-process "emus-process"))
- (emus-process (if emus-process-raw
- (if (process-live-p emus-process-raw)
- emus-process-raw
- (kill-process emus-process-raw)
- nil))))
- (if emus-process
- emus-process
- (let ((proc
- (make-process :name "emus-process"
- ;; :buffer (get-buffer-create "*emus-process*")
- :command `(,emus-mpg123-program "-R"))))
- (set-process-query-on-exit-flag proc nil)
- (process-send-string proc "silence\n")
- proc))))
-
-
-(defun emus-send-cmd (cmd &rest args)
- (process-send-string (emus-get-process)
- (concat
- (seq-reduce (lambda (s1 s2) (concat s1 " " s2)) args cmd)
- "\n")))
-
-(defun emus-send-and-process (respfun predfun cmd &rest args)
- (let ((respstr ""))
- (set-process-filter (emus-get-process)
- (lambda (proc string)
- (setq respstr (concat respstr string))
- (when (funcall predfun respstr)
- (set-process-filter proc nil)
- (funcall respfun respstr))))
- (apply #'emus-send-cmd cmd args)))
-