Fix race when fs events occur right after constructing worktree

Max Brunsfeld and Nathan Sobo created

Co-Authored-By: Nathan Sobo <nathan@zed.dev>

Change summary

fsevent/src/lib.rs | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)

Detailed changes

fsevent/src/lib.rs 🔗

@@ -74,7 +74,7 @@ impl EventStream {
                 Self::trampoline,
                 &stream_context,
                 cf_paths,
-                fs::kFSEventStreamEventIdSinceNow,
+                FSEventsGetCurrentEventId(),
                 latency.as_secs_f64(),
                 fs::kFSEventStreamCreateFlagFileEvents
                     | fs::kFSEventStreamCreateFlagNoDefer
@@ -285,6 +285,11 @@ impl std::fmt::Display for StreamFlags {
     }
 }
 
+#[link(name = "CoreServices", kind = "framework")]
+extern "C" {
+    pub fn FSEventsGetCurrentEventId() -> u64;
+}
+
 #[test]
 fn test_event_stream() {
     use std::{fs, sync::mpsc, time::Duration};