Diff for /embedaddon/lighttpd/src/fdevent_libev.c between versions 1.1 and 1.1.1.3

version 1.1, 2013/10/14 10:32:47 version 1.1.1.3, 2016/11/02 10:35:00
Line 1 Line 1
   #include "first.h"
   
 #include "fdevent.h"  #include "fdevent.h"
 #include "buffer.h"  #include "buffer.h"
 #include "log.h"  #include "log.h"
Line 67  static int fdevent_libev_event_set(fdevents *ev, int f Line 69  static int fdevent_libev_event_set(fdevents *ev, int f
   
         if (!watcher) {          if (!watcher) {
                 fdn->handler_ctx = watcher = calloc(1, sizeof(ev_io));                  fdn->handler_ctx = watcher = calloc(1, sizeof(ev_io));
                assert(watcher);                force_assert(watcher);
   
                 ev_io_init(watcher, io_watcher_cb, fd, ev_events);                  ev_io_init(watcher, io_watcher_cb, fd, ev_events);
                 watcher->data = ev;                  watcher->data = ev;
Line 87  static void timeout_watcher_cb(struct ev_loop *loop, e Line 89  static void timeout_watcher_cb(struct ev_loop *loop, e
         UNUSED(loop);          UNUSED(loop);
         UNUSED(w);          UNUSED(w);
         UNUSED(revents);          UNUSED(revents);
   
         ev_timer_stop(loop, w);  
 }  }
   
   static ev_timer timeout_watcher;
   
 static int fdevent_libev_poll(fdevents *ev, int timeout_ms) {  static int fdevent_libev_poll(fdevents *ev, int timeout_ms) {
        union {        timeout_watcher.repeat = (timeout_ms > 0) ? timeout_ms/1000.0 : 0.001;
                struct ev_watcher w; 
                struct ev_timer timer; 
        } timeout_watcher; 
   
        if (!timeout_ms) timeout_ms = 1;        ev_timer_again(ev->libev_loop, &timeout_watcher);
         ev_run(ev->libev_loop, EVRUN_ONCE);
   
         ev_init(&timeout_watcher.w, NULL);  
         ev_set_cb(&timeout_watcher.timer, timeout_watcher_cb);  
         timeout_watcher.timer.repeat = ((ev_tstamp) timeout_ms)/1000.0;  
         assert(timeout_watcher.timer.repeat);  
         ev_timer_again(ev->libev_loop, &timeout_watcher.timer);  
   
         ev_loop(ev->libev_loop, EVLOOP_ONESHOT);  
   
         ev_timer_stop(ev->libev_loop, &timeout_watcher.timer);  
   
         return 0;          return 0;
 }  }
   
Line 143  static int fdevent_libev_reset(fdevents *ev) { Line 132  static int fdevent_libev_reset(fdevents *ev) {
 }  }
   
 int fdevent_libev_init(fdevents *ev) {  int fdevent_libev_init(fdevents *ev) {
           struct ev_timer * const timer = &timeout_watcher;
   
         ev->type = FDEVENT_HANDLER_LIBEV;          ev->type = FDEVENT_HANDLER_LIBEV;
 #define SET(x) \  #define SET(x) \
         ev->x = fdevent_libev_##x;          ev->x = fdevent_libev_##x;
Line 164  int fdevent_libev_init(fdevents *ev) { Line 155  int fdevent_libev_init(fdevents *ev) {
   
                 return -1;                  return -1;
         }          }
   
           ev_timer_init(timer, timeout_watcher_cb, 0.0, 1.0);
   
         return 0;          return 0;
 }  }

Removed from v.1.1  
changed lines
  Added in v.1.1.1.3


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>