diff --git a/server.lisp b/server.lisp index 466829a..b4cea93 100644 --- a/server.lisp +++ b/server.lisp @@ -162,13 +162,14 @@ semaphore))) (defun sync (&optional (rt-server *s*)) - (when (typep rt-server 'rt-server) - (let* ((semaphore (get-semaphore-by-thread)) - (id (assign-id-map-id (sync-id-map rt-server) semaphore))) - (send-message rt-server "/sync" id) - #+ccl (ccl:wait-on-semaphore semaphore) - #+sbcl (sb-thread:wait-on-semaphore semaphore) - #+ecl (mp:wait-on-semaphore semaphore)))) + (if (eql (bt:current-thread) (sc-reply-thread rt-server)) nil + (when (typep rt-server 'rt-server) + (let* ((semaphore (get-semaphore-by-thread)) + (id (assign-id-map-id (sync-id-map rt-server) semaphore))) + (send-message rt-server "/sync" id) + #+ccl (ccl:wait-on-semaphore semaphore) + #+sbcl (sb-thread:wait-on-semaphore semaphore) + #+ecl (mp:wait-on-semaphore semaphore))))) (defmethod server-boot ((rt-server rt-server)) (when (boot-p rt-server) (error "SuperCollider server already running.")) diff --git a/synthdef.lisp b/synthdef.lisp index effdde7..af6f787 100644 --- a/synthdef.lisp +++ b/synthdef.lisp @@ -362,7 +362,7 @@ (prog1 (setf (gethash ,key (node-proxy-table *s*)) (play ,body :id ,id :out-bus ,out-bus :fade ,fade :to ,to :pos ,pos :gain ,gain)) (cond ((not ,id) (clear-node)) - ((and ,node (/= (id ,node) ,id)) (clear-node)))))) + ((and ,node (/= (id ,node) ,id)) (clear-node)))))) `(clear-node))))))