… | |
… | |
142 | } |
142 | } |
143 | |
143 | |
144 | static void |
144 | static void |
145 | x_cb_sig (EV_P_ struct ev_signal *w, int revents) |
145 | x_cb_sig (EV_P_ struct ev_signal *w, int revents) |
146 | { |
146 | { |
147 | x_cb ((struct event *)(((char *)w) - offsetof (struct event, iosig.sig)), revents); |
147 | struct event *ev = (struct event *)(((char *)w) - offsetof (struct event, iosig.sig)); |
|
|
148 | |
|
|
149 | if (revents & EV_ERROR) |
|
|
150 | event_del (ev); |
|
|
151 | |
|
|
152 | x_cb (ev, revents); |
148 | } |
153 | } |
149 | |
154 | |
150 | static void |
155 | static void |
151 | x_cb_io (EV_P_ struct ev_io *w, int revents) |
156 | x_cb_io (EV_P_ struct ev_io *w, int revents) |
152 | { |
157 | { |
153 | struct event *ev = (struct event *)(((char *)w) - offsetof (struct event, iosig.io)); |
158 | struct event *ev = (struct event *)(((char *)w) - offsetof (struct event, iosig.io)); |
154 | |
159 | |
|
|
160 | if (revents & EV_ERROR) |
|
|
161 | event_del (ev); |
155 | if (!(ev->ev_events & EV_PERSIST) && ev_is_active (w)) |
162 | else if (!(ev->ev_events & EV_PERSIST) && ev_is_active (w)) |
156 | ev_io_stop (EV_A_ w); |
163 | ev_io_stop (EV_A_ w); |
157 | |
164 | |
158 | x_cb (ev, revents); |
165 | x_cb (ev, revents); |
159 | } |
166 | } |
160 | |
167 | |