diff options
author | Nick Mathewson <nickm@torproject.org> | 2012-04-06 04:33:19 -0400 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2012-05-09 12:05:53 -0400 |
commit | ae2b84b2575be93d0aebba5c0b78453836f89f3c (patch) | |
tree | d72145bcb64a0556560e07181828821ebc180a3e /buffer.c | |
parent | fec8bae2673966325eeaabc3fc1af60b584abb1a (diff) | |
download | libevent-ae2b84b2575be93d0aebba5c0b78453836f89f3c.tar.gz |
Replace deferred_cbs with event_callback-based implementation.
Diffstat (limited to 'buffer.c')
-rw-r--r-- | buffer.c | 13 |
1 files changed, 6 insertions, 7 deletions
@@ -404,7 +404,7 @@ evbuffer_defer_callbacks(struct evbuffer *buffer, struct event_base *base) EVBUFFER_LOCK(buffer); buffer->cb_queue = event_base_get_deferred_cb_queue_(base); buffer->deferred_cbs = 1; - event_deferred_cb_init_(&buffer->deferred, + event_deferred_cb_init_(base, &buffer->deferred, evbuffer_deferred_callback, buffer); EVBUFFER_UNLOCK(buffer); return 0; @@ -509,13 +509,12 @@ evbuffer_invoke_callbacks_(struct evbuffer *buffer) } if (buffer->deferred_cbs) { - if (buffer->deferred.queued) - return; - evbuffer_incref_and_lock_(buffer); - if (buffer->parent) - bufferevent_incref_(buffer->parent); + if (event_deferred_cb_schedule_(buffer->cb_queue, &buffer->deferred)) { + evbuffer_incref_and_lock_(buffer); + if (buffer->parent) + bufferevent_incref_(buffer->parent); + } EVBUFFER_UNLOCK(buffer); - event_deferred_cb_schedule_(buffer->cb_queue, &buffer->deferred); } evbuffer_run_callbacks(buffer, 0); |