Skip to content
Commit b8bf2ad0 authored by Austin Sullivan's avatar Austin Sullivan Committed by Chromium LUCI CQ
Browse files

FilePathWatcher: Synchronously start watching on Mac

This CL includes two key changes:

1) Moves all manipulation of the event stream (start, stop, etc)
   to the sequence the FilePathWatcher lives on

Prior to this CL, the event stream was manipulated on the dispatch
queue. This does not appear to have been necessary. Moving the stream
manipulation to the sequence the FilePathWatcher lives on allows the
event stream to be started synchronously, from the Watch() method

2) Use kFSEventStreamEventIdSinceNow

Prior to this CL, the event stream was started via async dispatch in
the Watch() method. FSEventsGetCurrentEventId() was used to
synchronously get the ID of the most recent (system-wide) event, to
ensure that any changes between when Watch() returned and when the
stream asynchronously started would be played back as historical
events. See the documentation of the sinceWhen field here:
https://developer.apple.com/documentation/coreservices/1443980-fseventstreamcreate

Since the stream is now started synchronously,
kFSEventStreamEventIdSinceNow is sufficient for ensuring that all
changes after Watch() returns are noticed

Note that creating a stream with kFSEventStreamEventIdSinceNow will
no longer fire a "history done" event shortly after stream creation.
Any callers which relied on the this behavior may break.
See the documentation here:
https://developer.apple.com/documentation/coreservices/kfseventstreameventflaghistorydone

Bug: 1019297
Change-Id: Ib720f8b19d0309714d153de974404fab25b16894
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/4814677


Reviewed-by: default avatarWez <wez@chromium.org>
Commit-Queue: Austin Sullivan <asully@chromium.org>
Reviewed-by: default avatarRobert Sesek <rsesek@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1218981}
parent f5378680
Loading
Loading
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment