static unsigned int start_timeout_func (Camera *camera, unsigned int timeout, CameraTimeoutFunc func, void *data) { TimeoutData *td; td = g_new0 (TimeoutData, 1); td->camera = camera; td->func = func; return (gtk_timeout_add_full (timeout * 1000, timeout_func, NULL, td, timeout_destroy_notify)); }
static VALUE rg_m_timeout_add(VALUE self, VALUE interval) { VALUE func, rb_id; callback_info_t *info; guint id; func = rb_block_proc(); info = ALLOC(callback_info_t); info->callback = func; info->key = id__timeout_callbacks__; id = gtk_timeout_add_full(NUM2UINT(interval), (GtkFunction)gtk_m_function, NULL, (gpointer)info, g_free); info->id = id; rb_id = UINT2NUM(id); G_RELATIVE2(self, func, id__timeout_callbacks__, rb_id); return rb_id; }