def start
prime
timestamp_checked
dirs = Array(directories.map{|d| d.dir})
mac_callback = lambda do |stream, ctx, num_events, paths, marks, event_ids|
examine
end
@stream = OSX::FSEventStreamCreate(OSX::KCFAllocatorDefault, mac_callback, nil, dirs, OSX::KFSEventStreamEventIdSinceNow, @sleep_time, 0)
raise "Failed to create stream" unless stream
OSX::FSEventStreamScheduleWithRunLoop(stream, OSX::CFRunLoopGetCurrent(), OSX::KCFRunLoopDefaultMode)
unless OSX::FSEventStreamStart(stream)
raise "Failed to start stream"
end
@thread = Thread.new do
begin
OSX::CFRunLoopRun()
rescue Interrupt
OSX::FSEventStreamStop(stream)
OSX::FSEventStreamInvalidate(stream)
OSX::FSEventStreamRelease(stream)
@stream = nil
end
end
@thread.priority = @priority
end