浏览代码

LibCore: Remove deleted monitored files before invoking change callbacks

The caller may want to re-add the monitored file. It won't be able to do
so if we internally believe the file is still being monitored.
Timothy Flynn 10 月之前
父节点
当前提交
574b4be433
共有 1 个文件被更改,包括 2 次插入1 次删除
  1. 2 1
      Userland/Libraries/LibCore/FileWatcherLinux.cpp

+ 2 - 1
Userland/Libraries/LibCore/FileWatcherLinux.cpp

@@ -111,7 +111,6 @@ FileWatcher::FileWatcher(int watcher_fd, NonnullRefPtr<Notifier> notifier)
         auto maybe_event = get_event_from_fd(m_notifier->fd(), m_wd_to_path);
         auto maybe_event = get_event_from_fd(m_notifier->fd(), m_wd_to_path);
         if (maybe_event.has_value()) {
         if (maybe_event.has_value()) {
             auto event = maybe_event.value();
             auto event = maybe_event.value();
-            on_change(event);
 
 
             if (has_flag(event.type, FileWatcherEvent::Type::Deleted)) {
             if (has_flag(event.type, FileWatcherEvent::Type::Deleted)) {
                 auto result = remove_watch(event.event_path);
                 auto result = remove_watch(event.event_path);
@@ -119,6 +118,8 @@ FileWatcher::FileWatcher(int watcher_fd, NonnullRefPtr<Notifier> notifier)
                     dbgln_if(FILE_WATCHER_DEBUG, "on_ready_to_read: {}", result.error());
                     dbgln_if(FILE_WATCHER_DEBUG, "on_ready_to_read: {}", result.error());
                 }
                 }
             }
             }
+
+            on_change(event);
         }
         }
     };
     };
 }
 }