summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--2d/signals.scm10
1 files changed, 8 insertions, 2 deletions
diff --git a/2d/signals.scm b/2d/signals.scm
index 1f776ed..39e4d86 100644
--- a/2d/signals.scm
+++ b/2d/signals.scm
@@ -25,6 +25,7 @@
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-9)
#:use-module (srfi srfi-26)
+ #:use-module (2d coroutine)
#:export (<signal>
signal?
make-signal
@@ -110,7 +111,12 @@ value will be propagated to LISTENER."
"Detach all connectors from SIGNAL."
(%set-signal-connectors! signal '()))
-(define* (signal-set! signal value #:optional (from #f))
+(codefine* (signal-set! signal value #:optional (from #f))
+ "Set VALUE for SIGNAL from the connected signal FROM and
+propagate VALUE to all connected signals. "
+ (signal-set-and-propagate! signal value from))
+
+(define (signal-set-and-propagate! signal value from)
"Set VALUE for SIGNAL from the connected signal FROM and
propagate VALUE to all connected signals. "
(let ((value (%signal-transform signal value from)))
@@ -126,7 +132,7 @@ propagate VALUE to all connected signals. "
"Receive VALUE for SIGNAL from the connected signal FROM. VALUE
will be set if it passes through the filter."
(when (signal-keep? signal value from)
- (signal-set! signal value from)))
+ (signal-set-and-propagate! signal value from)))
;;;
;;; Primitive signals