summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuo Jinghua <sunmoon1997@gmail.com>2009-11-01 20:54:46 +0800
committerLuo Jinghua <sunmoon1997@gmail.com>2009-11-01 20:54:46 +0800
commitf4a0df4aab19c3900e4051fd1e96869f8f00abd9 (patch)
tree6b440b592c43fe352e6a04637c44224b13ef2b8a
parentd018dfdd1b28380048da845d1efd8495432a8d0c (diff)
milkway: use the mw-source::set_callback method
-rw-r--r--milkway/mw-timeout-source.c32
-rw-r--r--milkway/mw-timeout-source.h12
-rw-r--r--milkway/test/main-loop-test.c5
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(&current_time);
+ mw_timeout_set_expiration (self, &current_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, &current_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);
}