]> git.llucax.com Git - software/libev.git/commitdiff
minor kqueue optimisation
authorroot <root>
Fri, 23 Nov 2007 05:28:17 +0000 (05:28 +0000)
committerroot <root>
Fri, 23 Nov 2007 05:28:17 +0000 (05:28 +0000)
ev_kqueue.c

index 54cd5eb82b4c60e5aef2e3a1c48ad5d2df1e93e0..a69c0a727c20d1e354f210185cfa700433d0689c 100644 (file)
@@ -57,17 +57,20 @@ kqueue_change (EV_P_ int fd, int filter, int flags, int fflags)
 static void
 kqueue_modify (EV_P_ int fd, int oev, int nev)
 {
-  /* to detect close/reopen reliably, we have to remove and re-add */
-  /* event requests even when oev == nev */
+  if (oev != nev)
+    {
+      if (oev & EV_READ)
+        kqueue_change (EV_A_ fd, EVFILT_READ , EV_DELETE, 0);
 
-  if (oev & EV_READ)
-    kqueue_change (EV_A_ fd, EVFILT_READ, EV_DELETE, 0);
+      if (oev & EV_WRITE)
+        kqueue_change (EV_A_ fd, EVFILT_WRITE, EV_DELETE, 0);
+    }
 
-  if (oev & EV_WRITE)
-    kqueue_change (EV_A_ fd, EVFILT_WRITE, EV_DELETE, 0);
+  /* to detect close/reopen reliably, we have to re-add */
+  /* event requests even when oev == nev */
 
   if (nev & EV_READ)
-    kqueue_change (EV_A_ fd, EVFILT_READ, EV_ADD, NOTE_EOF);
+    kqueue_change (EV_A_ fd, EVFILT_READ , EV_ADD, NOTE_EOF);
 
   if (nev & EV_WRITE)
     kqueue_change (EV_A_ fd, EVFILT_WRITE, EV_ADD, NOTE_EOF);