about summary refs log tree commit homepage
diff options
context:
space:
mode:
-rw-r--r--lib/PublicInbox/DirIdle.pm8
-rw-r--r--lib/PublicInbox/LEI.pm5
-rw-r--r--lib/PublicInbox/Watch.pm3
-rw-r--r--t/dir_idle.t3
4 files changed, 8 insertions, 11 deletions
diff --git a/lib/PublicInbox/DirIdle.pm b/lib/PublicInbox/DirIdle.pm
index c9a293e9..270d3829 100644
--- a/lib/PublicInbox/DirIdle.pm
+++ b/lib/PublicInbox/DirIdle.pm
@@ -32,7 +32,7 @@ if ($^O eq 'linux' && eval { require Linux::Inotify2; 1 }) {
 }
 
 sub new {
-        my ($class, $dirs, $cb, $gone) = @_;
+        my ($class, $cb) = @_;
         my $self = bless { cb => $cb }, $class;
         my $inot;
         if ($ino_cls) {
@@ -43,13 +43,7 @@ sub new {
                 require PublicInbox::FakeInotify;
                 $inot = PublicInbox::FakeInotify->new; # starts timer
         }
-
-        # Linux::Inotify2->watch or similar
-        my $fl = $MAIL_IN;
-        $fl |= $MAIL_GONE if $gone;
-        $inot->watch($_, $fl) for @$dirs;
         $self->{inot} = $inot;
-        PublicInbox::FakeInotify::poll_once($self) if !$ino_cls;
         $self;
 }
 
diff --git a/lib/PublicInbox/LEI.pm b/lib/PublicInbox/LEI.pm
index 7dfd3398..a526a91f 100644
--- a/lib/PublicInbox/LEI.pm
+++ b/lib/PublicInbox/LEI.pm
@@ -1305,10 +1305,11 @@ sub lazy_start {
                 USR2 => \&noop,
         };
         require PublicInbox::DirIdle;
-        local $dir_idle = PublicInbox::DirIdle->new([$sock_dir], sub {
+        local $dir_idle = PublicInbox::DirIdle->new(sub {
                 # just rely on wakeup to hit PostLoopCallback set below
                 dir_idle_handler($_[0]) if $_[0]->fullname ne $path;
-        }, 1);
+        });
+        $dir_idle->add_watches([$sock_dir]);
         PublicInbox::DS->SetPostLoopCallback(sub {
                 my ($dmap, undef) = @_;
                 if (@st = defined($path) ? stat($path) : ()) {
diff --git a/lib/PublicInbox/Watch.pm b/lib/PublicInbox/Watch.pm
index c6bebce3..b48d9ccc 100644
--- a/lib/PublicInbox/Watch.pm
+++ b/lib/PublicInbox/Watch.pm
@@ -282,7 +282,8 @@ sub watch_fs_init ($) {
         };
         require PublicInbox::DirIdle;
         # inotify_create + EPOLL_CTL_ADD
-        PublicInbox::DirIdle->new([keys %{$self->{mdmap}}], $cb);
+        my $dir_idle = PublicInbox::DirIdle->new($cb);
+        $dir_idle->add_watches([keys %{$self->{mdmap}}]);
 }
 
 sub net_cb { # NetReader::(nntp|imap)_each callback
diff --git a/t/dir_idle.t b/t/dir_idle.t
index 8e7f3b70..19e54967 100644
--- a/t/dir_idle.t
+++ b/t/dir_idle.t
@@ -9,7 +9,8 @@ my ($tmpdir, $for_destroy) = tmpdir();
 make_path("$tmpdir/a/b", "$tmpdir/c");
 my @x;
 my $cb = sub { push @x, \@_ };
-my $di = PublicInbox::DirIdle->new(["$tmpdir/a", "$tmpdir/c"], $cb, 1);
+my $di = PublicInbox::DirIdle->new($cb);
+$di->add_watches(["$tmpdir/a", "$tmpdir/c"], 1);
 PublicInbox::DS->SetLoopTimeout(1000);
 my $end = 3 + now;
 PublicInbox::DS->SetPostLoopCallback(sub { scalar(@x) == 0 && now < $end });