Send CHANGES_DONE_HINT on file moves if no IN_CLOSE_WRITE is emitted
authorCosimo Alfarano <cosimo.alfarano@collabora.co.uk>
Wed, 19 Jan 2011 19:08:15 +0000 (19:08 +0000)
committerSimon McVittie <simon.mcvittie@collabora.co.uk>
Mon, 5 Dec 2011 18:27:34 +0000 (18:27 +0000)
commitfd1e9938b36677587dfe9960dacb678bbd3981bf
treec8cbab0a8235cac8dcd43991701a626bf96c3c96
parent83d0c8a7396e8c1f70619e01f0b0c06fd22790b7
Send CHANGES_DONE_HINT on file moves if no IN_CLOSE_WRITE is emitted

This patch makes GFileMonitor to emit EVENT_CHANGES_DONE_HINT when
EVENT_CREATED is emitted but the file is not opened for writing.

On file moves across different mounted volumes, inotify will always emit
IN_CREATE and IN_CLOSE_WRITE (plus other events).
This translates into GIO's _EVENT_CREATED and _EVENT_CHANGES_DONE_HINT.

On file moves across the same mounted volumes, inotify will emit
IN_MOVED_FROM/IN_MOVED_TO which will be translated into
_EVENT_DELETED/_EVENT_CREATED GIO's side. No _EVENT_CHANGES_DONE_HINT is
emited afterwards.
Under such circumstances a file indexer does not know when actually the
file is ready to be indexed, either waiting too much or triggering the
indexing twice. On small devices it's not advisable.

Bug: https://bugzilla.gnome.org/show_bug.cgi?id=640077
Bug-NB: NB#219982
Reviewed-by: Simon McVittie <simon.mcvittie@collabora.co.uk>
Reviewed-by: Tomas Bzatek <tbzatek@redhat.com>
gio/inotify/inotify-helper.c
gio/inotify/inotify-kernel.c
gio/inotify/inotify-kernel.h