Changeset 34990
- Timestamp:
- 08/23/09 22:21:31 (4 years ago)
- Location:
- lang/c/picoev/trunk
- Files:
-
- 1 added
- 2 modified
-
picoev.h (modified) (3 diffs)
-
picoev_epoll.c (modified) (3 diffs)
-
picoev_kqueue.c (added)
Legend:
- Unmodified
- Added
- Removed
-
lang/c/picoev/trunk/picoev.h
r34989 r34990 165 165 target->events = 0; 166 166 target->timeout_idx = -1; 167 if ( picoev_update_events_internal(loop, fd, events) != 0) {167 if (events != 0 && picoev_update_events_internal(loop, fd, events) != 0) { 168 168 target->loop_id = 0; 169 169 return -1; … … 179 179 assert(PICOEV_IS_INITED_AND_FD_IN_RANGE(fd)); 180 180 target = picoev.fds + fd; 181 if (target->events != 0) { 182 if (picoev_update_events_internal(loop, fd, 0) != 0) { 183 return -1; 184 } 181 if (target->events != 0 182 && picoev_update_events_internal(loop, fd, 0) != 0) { 183 return -1; 185 184 } 186 185 picoev_set_timeout(loop, fd, 0); … … 200 199 int picoev_set_events(picoev_loop* loop, int fd, int events) { 201 200 assert(PICOEV_IS_INITED_AND_FD_IN_RANGE(fd)); 202 if (picoev.fds[fd].events != events) { 203 if (picoev_update_events_internal(loop, fd, events) != 0) { 204 return -1; 205 } 201 if (picoev.fds[fd].events != events 202 && picoev_update_events_internal(loop, fd, events) != 0) { 203 return -1; 206 204 } 207 205 return 0; -
lang/c/picoev/trunk/picoev_epoll.c
r34988 r34990 16 16 int old_events = picoev.fds[fd].events; 17 17 18 assert(PICOEV_FD_BELONGS_TO_LOOP(&loop->loop, fd)); 19 18 20 #define CTL(m, e) \ 19 21 if (epoll_ctl(loop->epfd, m, fd, e) != 0) { \ … … 21 23 } 22 24 23 if (old_events == events) { 24 return 0; 25 } 26 if (events != 0) { 25 if (events == 0) { 26 CTL(EPOLL_CTL_DEL, 0); 27 } else { 27 28 struct epoll_event ev; 28 29 ev.events = ((events & PICOEV_READ) != 0 ? EPOLLIN : 0) … … 34 35 CTL(EPOLL_CTL_ADD, &ev); 35 36 } 36 } else {37 CTL(EPOLL_CTL_DEL, 0);38 37 } 39 38
![(please configure the [header_logo] section in trac.ini)](/share/chrome/site/your_project_logo.png)