Thank you. I applied this to trunk.
Niels.
On Nov 10, 2007 9:14 PM, Christopher Layne <[EMAIL PROTECTED]> wrote:
> On Sat, Nov 10, 2007 at 06:49:58PM -0800, Christopher Layne wrote:
> > On Sat, Nov 10, 2007 at 06:44:12PM -0800, Christopher Layne wrote:
> > > 11. here's the funny part: evsignal_process() increments
> > > event_count_active - but since our
>
> Here's a better patch:
>
> This removes docount entirely. docount is used to determine if the event being
> added or removed from the queue should influence base->event_count. The
> internal signal event should not be counted as an event to wait for
> - such that when one deletes all their events the event loop will
> not count the internal signal event as something to wait around for
> (nothing changes here). However, based on the previous discussion, it
> still needs to be processed as a normal active event, hence we change
> base->event_count_active regardless of if it's internal or not.
>
> -cl
>
> Index: event.c
> ===================================================================
> --- event.c (revision 507)
> +++ event.c (working copy)
> @@ -829,23 +829,17 @@
> void
> event_queue_remove(struct event_base *base, struct event *ev, int queue)
> {
> - int docount = 1;
> -
> if (!(ev->ev_flags & queue))
> event_errx(1, "%s: %p(fd %d) not on queue %x", __func__,
> ev, ev->ev_fd, queue);
>
> - if (ev->ev_flags & EVLIST_INTERNAL)
> - docount = 0;
> -
> - if (docount)
> + if (~ev->ev_flags & EVLIST_INTERNAL)
> base->event_count--;
>
> ev->ev_flags &= ~queue;
> switch (queue) {
> case EVLIST_ACTIVE:
> - if (docount)
> - base->event_count_active--;
> + base->event_count_active--;
> TAILQ_REMOVE(base->activequeues[ev->ev_pri],
> ev, ev_active_next);
> break;
> @@ -866,8 +860,6 @@
> void
> event_queue_insert(struct event_base *base, struct event *ev, int queue)
> {
> - int docount = 1;
> -
> if (ev->ev_flags & queue) {
> /* Double insertion is possible for active events */
> if (queue & EVLIST_ACTIVE)
> @@ -877,17 +869,13 @@
> ev, ev->ev_fd, queue);
> }
>
> - if (ev->ev_flags & EVLIST_INTERNAL)
> - docount = 0;
> -
> - if (docount)
> + if (~ev->ev_flags & EVLIST_INTERNAL)
> base->event_count++;
>
> ev->ev_flags |= queue;
> switch (queue) {
> case EVLIST_ACTIVE:
> - if (docount)
> - base->event_count_active++;
> + base->event_count_active++;
> TAILQ_INSERT_TAIL(base->activequeues[ev->ev_pri],
> ev,ev_active_next);
> break;
>
> _______________________________________________
>
> Libevent-users mailing list
> [email protected]
> http://monkeymail.org/mailman/listinfo/libevent-users
>
>
_______________________________________________
Libevent-users mailing list
[email protected]
http://monkeymail.org/mailman/listinfo/libevent-users