From 82d793b14183ab06e597738811e6950f8848c599 Mon Sep 17 00:00:00 2001 From: Slava Pestov Date: Fri, 11 Apr 2008 08:35:21 -0500 Subject: [PATCH] Update Mac OS X monitors for new API --- extra/core-foundation/fsevents/fsevents.factor | 4 +--- extra/io/monitors/monitors.factor | 3 ++- extra/io/unix/macosx/macosx.factor | 17 +++++++++++------ 3 files changed, 14 insertions(+), 10 deletions(-) diff --git a/extra/core-foundation/fsevents/fsevents.factor b/extra/core-foundation/fsevents/fsevents.factor index 55f2462061..f181d8a761 100644 --- a/extra/core-foundation/fsevents/fsevents.factor +++ b/extra/core-foundation/fsevents/fsevents.factor @@ -151,12 +151,10 @@ SYMBOL: event-stream-callbacks [ event-stream-callbacks global - [ [ drop expired? not ] assoc-subset ] change-at + [ [ drop expired? not ] assoc-subset H{ } assoc-like ] change-at 1 \ event-stream-counter set-global ] "core-foundation" add-init-hook -event-stream-callbacks global [ H{ } assoc-like ] change-at - : add-event-source-callback ( quot -- id ) event-stream-counter [ event-stream-callbacks get set-at ] keep ; diff --git a/extra/io/monitors/monitors.factor b/extra/io/monitors/monitors.factor index 8128acfea8..8d2ddba5f2 100755 --- a/extra/io/monitors/monitors.factor +++ b/extra/io/monitors/monitors.factor @@ -29,7 +29,8 @@ M: monitor set-timeout (>>timeout) ; swap >>path ; inline : queue-change ( path changes monitor -- ) - dup [ [ 3array ] keep queue>> mailbox-put ] [ 3drop ] if ; + 3dup and and + [ [ 3array ] keep queue>> mailbox-put ] [ 3drop ] if ; HOOK: (monitor) io-backend ( path recursive? mailbox -- monitor ) diff --git a/extra/io/unix/macosx/macosx.factor b/extra/io/unix/macosx/macosx.factor index 039b1b250b..68eb2f13bb 100644 --- a/extra/io/unix/macosx/macosx.factor +++ b/extra/io/unix/macosx/macosx.factor @@ -1,17 +1,20 @@ ! Copyright (C) 2008 Slava Pestov. ! See http://factorcode.org/license.txt for BSD license. USING: io.unix.bsd io.backend io.monitors core-foundation.fsevents -continuations kernel sequences namespaces arrays system locals ; +continuations kernel sequences namespaces arrays system locals +accessors ; IN: io.unix.macosx -macosx set-io-backend - TUPLE: macosx-monitor < monitor handle ; : enqueue-notifications ( triples monitor -- ) - tuck monitor-queue - [ [ first { +modify-file+ } swap changed-file ] each ] bind - notify-callback ; + [ + >r first { +modify-file+ } r> queue-change + ] curry each ; + +M: macosx init-monitors ; + +M: macosx dispose-monitors ; M:: macosx (monitor) ( path recursive? mailbox -- monitor ) path mailbox macosx-monitor construct-monitor @@ -20,3 +23,5 @@ M:: macosx (monitor) ( path recursive? mailbox -- monitor ) M: macosx-monitor dispose handle>> dispose ; + +macosx set-io-backend