diff options
author | Luo Jinghua <sunmoon1997@gmail.com> | 2009-11-01 20:54:46 +0800 |
---|---|---|
committer | Luo Jinghua <sunmoon1997@gmail.com> | 2009-11-01 20:54:46 +0800 |
commit | f4a0df4aab19c3900e4051fd1e96869f8f00abd9 (patch) | |
tree | 6b440b592c43fe352e6a04637c44224b13ef2b8a | |
parent | d018dfdd1b28380048da845d1efd8495432a8d0c (diff) |
milkway: use the mw-source::set_callback method
-rw-r--r-- | milkway/mw-timeout-source.c | 32 | ||||
-rw-r--r-- | milkway/mw-timeout-source.h | 12 | ||||
-rw-r--r-- | milkway/test/main-loop-test.c | 5 |
3 files changed, 18 insertions, 31 deletions
diff --git a/milkway/mw-timeout-source.c b/milkway/mw-timeout-source.c index 9790c16..bfa0738 100644 --- a/milkway/mw-timeout-source.c +++ b/milkway/mw-timeout-source.c @@ -93,37 +93,33 @@ mw_timeout_set_expiration (mw_timeout_source_t *self, mw_timeout_source_t* mw_timeout_source_init(mw_timeout_source_t *self, - int interval, - mw_source_func_t func, - mw_pointer_t user_data, - mw_destroy_func_t destroy_func) + int interval, + int granularity) { + mw_timeval_t current_time; + if (!mw_source_init(&self->base)) return NULL; self->interval = interval; - self->granularity = 0; - self->func = func; - self->user_data = user_data; - self->destroy_func = destroy_func; + self->granularity = granularity; mw_timeval_clear(&self->expiration); + + mw_get_system_time(¤t_time); + mw_timeout_set_expiration (self, ¤t_time); return self; } mw_timeout_source_t* -mw_timeout_source_new(int interval, - mw_source_func_t func, - mw_pointer_t user_data, - mw_destroy_func_t destroy_func) +mw_timeout_source_new(int interval) { mw_timeout_source_t *self; self = mw_object_alloc(MW_TIMEOUT_SOURCE_TYPE); if (!self) return NULL; - return mw_timeout_source_init(self, interval, func, - user_data, destroy_func); + return mw_timeout_source_init(self, interval, 0); } static mw_bool_t @@ -189,10 +185,10 @@ mw_timeout_source_dispatch(mw_source_t *super) { mw_timeout_source_t* self = (mw_timeout_source_t*)super; - if (!self->func) + if (!self->base.func) return MW_FALSE; - if (self->func (super, self->user_data)) { + if (self->base.func (super, self->base.user_data)) { mw_timeval_t current_time; mw_source_get_current_time (super, ¤t_time); @@ -207,10 +203,6 @@ mw_timeout_source_dispatch(mw_source_t *super) static void mw_timeout_source_finalize(mw_object_t *super) { - mw_timeout_source_t *self = (mw_timeout_source_t*)super; - - if (self->destroy_func) - self->destroy_func(self->user_data); MW_SUPER_FINALIZE(super, MW_TIMEOUT_SOURCE_TYPE)(super); } diff --git a/milkway/mw-timeout-source.h b/milkway/mw-timeout-source.h index 3313e7e..e6f1819 100644 --- a/milkway/mw-timeout-source.h +++ b/milkway/mw-timeout-source.h @@ -36,9 +36,6 @@ struct _mw_timeout_source { int interval; int granularity; - mw_source_func_t func; - mw_pointer_t user_data; - mw_destroy_func_t destroy_func; mw_timeval_t expiration; }; @@ -49,14 +46,9 @@ mw_timeout_source_get_type(void); mw_public mw_timeout_source_t* mw_timeout_source_init(mw_timeout_source_t *self, int interval, - mw_source_func_t func, - mw_pointer_t user_data, - mw_destroy_func_t destroy_func); + int granularity); mw_public mw_timeout_source_t* -mw_timeout_source_new(int interval, - mw_source_func_t func, - mw_pointer_t user_data, - mw_destroy_func_t destroy_func); +mw_timeout_source_new(int interval); #endif diff --git a/milkway/test/main-loop-test.c b/milkway/test/main-loop-test.c index 6a4a073..348cece 100644 --- a/milkway/test/main-loop-test.c +++ b/milkway/test/main-loop-test.c @@ -51,9 +51,12 @@ test_poll(void) ctx = mw_main_context_new(); loop = mw_main_loop_new(ctx); - source = (mw_source_t*)mw_timeout_source_new(500, timeout_cb, loop, NULL); + + source = (mw_source_t*)mw_timeout_source_new(500); + mw_source_set_callback(source, timeout_cb, loop, NULL); mw_main_context_add_source(ctx, source); mw_object_unref(source); + mw_main_loop_run(loop); mw_object_unref(ctx); } |