diff --git a/basis/models/models.factor b/basis/models/models.factor index 59a04f8031..149a97ff59 100644 --- a/basis/models/models.factor +++ b/basis/models/models.factor @@ -30,10 +30,10 @@ GENERIC: model-activated ( model -- ) M: model model-activated drop ; : ref-model ( model -- n ) - [ 1 + ] change-ref ref>> ; + [ 1 + dup ] change-ref drop ; : unref-model ( model -- n ) - [ 1 - ] change-ref ref>> ; + [ 1 - dup ] change-ref drop ; : activate-model ( model -- ) dup ref-model 1 = [ @@ -57,17 +57,17 @@ DEFER: remove-connection GENERIC: model-changed ( model observer -- ) : add-connection ( observer model -- ) - dup connections>> empty? [ dup activate-model ] when - connections>> push ; + dup connections>> + [ empty? [ activate-model ] [ drop ] if ] + [ push ] bi ; : remove-connection ( observer model -- ) - [ connections>> remove! drop ] keep - dup connections>> empty? [ dup deactivate-model ] when - drop ; + [ connections>> remove! ] keep swap + empty? [ deactivate-model ] [ drop ] if ; : with-locked-model ( model quot -- ) [ '[ _ t >>locked? @ ] ] - [ drop '[ _ f >>locked? drop ] ] + [ drop '[ f _ locked?<< ] ] 2bi [ ] cleanup ; inline GENERIC: update-model ( model -- )