From 2aec8d0cba2a2bf1001014ee5dadbafc95831a64 Mon Sep 17 00:00:00 2001 From: David Thompson Date: Sun, 1 Dec 2013 19:03:44 -0500 Subject: Make signal-set! a coroutine. * 2d/signals.el (signal-set!): Make coroutine. (signal-set-and-propagate!): New procedure. --- 2d/signals.scm | 10 ++++++++-- 1 file 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? 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 -- cgit v1.2.3