From 6e86ea3f962577dca6f5ce703ab22e0ad2390d2b Mon Sep 17 00:00:00 2001 From: Thomas White Date: Thu, 13 May 2021 11:00:16 +0200 Subject: Avoid mutation of state objects by "set-state-name!" --- guile/starlet/scanout.scm | 15 +++++++++++++++ guile/starlet/state.scm | 8 +------- 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/guile/starlet/scanout.scm b/guile/starlet/scanout.scm index 7833076..e7ab623 100644 --- a/guile/starlet/scanout.scm +++ b/guile/starlet/scanout.scm @@ -41,6 +41,21 @@ ;; List of states being scanned out (define state-list (make-atomic-box '())) +;; Association list of names to states +(define state-names (make-atomic-box '())) + + +(define (get-state-name st) + (assq-ref (atomic-box-ref state-names) + st)) + + +(define (set-state-name! st name) + (atomic-box-set! state-names + (assq-set! (atomic-box-ref state-names) + st + name))) + ;; Patch a new fixture (define* (patch-real name diff --git a/guile/starlet/state.scm b/guile/starlet/state.scm index a889d0c..92bf681 100644 --- a/guile/starlet/state.scm +++ b/guile/starlet/state.scm @@ -31,7 +31,6 @@ #:export ( make-empty-state get-state-name - set-state-name! state-for-each state-map clear-state! @@ -60,12 +59,7 @@ (define-class () (hash-table-box #:init-form (make-atomic-box (make-hash-table)) - #:getter get-ht-box) - (name - #:init-value #f - #:init-keyword #:name - #:getter get-state-name - #:setter set-state-name!)) + #:getter get-ht-box)) ;; The state used to build a new scene for recording -- cgit v1.2.3