]> git.llucax.com Git - software/libev.git/commitdiff
*** empty log message ***
authorroot <root>
Sat, 8 Dec 2007 14:12:07 +0000 (14:12 +0000)
committerroot <root>
Sat, 8 Dec 2007 14:12:07 +0000 (14:12 +0000)
ev.c
ev.h
ev.pod

diff --git a/ev.c b/ev.c
index 260787d46dc3fe4f63f0bef6d110c2672a019901..7e9423e84e7f522e683fa2bba8f1bdb551b36f05 100644 (file)
--- a/ev.c
+++ b/ev.c
@@ -509,7 +509,8 @@ fd_event (EV_P_ int fd, int revents)
 void
 ev_feed_fd_event (EV_P_ int fd, int revents)
 {
-  fd_event (EV_A_ fd, revents);
+  if (fd >= 0 && fd < anfdmax)
+    fd_event (EV_A_ fd, revents);
 }
 
 void inline_size
@@ -1165,6 +1166,12 @@ ev_default_fork (void)
 
 /*****************************************************************************/
 
+void
+ev_invoke (EV_P_ void *w, int revents)
+{
+  EV_CB_INVOKE ((W)w, revents);
+}
+
 void inline_speed
 call_pending (EV_P)
 {
diff --git a/ev.h b/ev.h
index e92d6da288d7d5df06b7392a6ce60fb1f3c7cad5..0652f1ba24ec54994369f731b2480e3b30f5e971 100644 (file)
--- a/ev.h
+++ b/ev.h
@@ -475,6 +475,7 @@ void ev_once (EV_P_ int fd, int events, ev_tstamp timeout, void (*cb)(int revent
 void ev_feed_event     (EV_P_ void *w, int revents);
 void ev_feed_fd_event  (EV_P_ int fd, int revents);
 void ev_feed_signal_event (EV_P_ int signum);
+void ev_invoke         (EV_P_ void *w, int revents);
 int  ev_clear_pending  (EV_P_ void *w);
 
 void ev_io_start       (EV_P_ ev_io *w);
diff --git a/ev.pod b/ev.pod
index a578fd8a353e9bf692bc17d0e44f076015ce2afe..ef9892efe38288640bdc236f3ffd8dd8bfa37362 100644 (file)
--- a/ev.pod
+++ b/ev.pod
@@ -779,6 +779,18 @@ Setting a priority outside the range of C<EV_MINPRI> to C<EV_MAXPRI> is
 fine, as long as you do not mind that the priority value you query might
 or might not have been adjusted to be within valid range.
 
+=item ev_invoke (loop, ev_TYPE *watcher, int revents)
+
+Invoke the C<watcher> with the given C<loop> and C<revents>. Neither
+C<loop> nor C<revents> need to be valid as long as the watcher callback
+can deal with that fact.
+
+=item int ev_clear_pending (loop, ev_TYPE *watcher)
+
+If the watcher is pending, this function returns clears its pending status
+and returns its C<revents> bitset (as if its callback was invoked). If the
+watcher isn't pending it does nothing and returns C<0>.
+
 =back