diff -urN cui80/cui.c cui81/cui.c --- cui80/cui.c Thu Mar 27 01:00:00 2014 +++ cui81/cui.c Thu Mar 27 22:00:00 2014 @@ -18,7 +18,6 @@ struct cui_main_stack{ cui focus; int running; - void *timer_list; cui_main_stack prev; }; @@ -56,12 +55,6 @@ if(main_stack) main_stack->running = v; } -void * -cui_timer_list_ptr_get(void) -{ - return main_stack ? &main_stack->timer_list : NULL; -} - cui cui_alloc(int size) { @@ -145,6 +138,7 @@ int n = strlen(s); char *buf; + if(w <=0 || h <= 0) return; if((buf = malloc(w + 1)) == NULL) ERR("No Mem"); for(ix=0; ixfocus = init_focus; sp->running = TRUE; - sp->timer_list = timer_list; sp->prev = main_stack; main_stack = sp; @@ -432,7 +425,7 @@ cui_clear(top_obj); cui_draw(top_obj); while(cui_running_get()){ - cui_timer_work(&sp->timer_list); + cui_timer_work(); if((key = cui_key_get2()) == 0) continue; focus = cui_focus_get(); if(focus){ diff -urN cui80/cui.h cui81/cui.h --- cui80/cui.h Thu Mar 27 01:00:00 2014 +++ cui81/cui.h Thu Mar 27 22:00:00 2014 @@ -85,10 +85,9 @@ void cui_focus_chk(void); int cui_running_get(void); void cui_running_set(int v); -void *cui_timer_list_ptr_get(void); void cui_quit(void); -void cui_main(cui top_obj, cui init_focus, void *timer_list); +void cui_main(cui top_obj, cui init_focus); void cui_del(cui obj); void cui_free_chain(cui obj); void cui_free(cui obj); diff -urN cui80/cui_test.c cui81/cui_test.c --- cui80/cui_test.c Thu Mar 27 01:00:00 2014 +++ cui81/cui_test.c Thu Mar 27 22:00:00 2014 @@ -63,7 +63,7 @@ cui_button_str_set(p->btn2, "No"); cui_unbind(obj, CUI_EVT_BUTTON, my_hdr); joke = joke_new(((cui)p)->parent->parent->parent, 0, 4); - cui_main(joke, joke->children->next, NULL); + cui_main(joke, joke->children->next); cui_del(joke); cui_free(joke); return TRUE; @@ -145,7 +145,7 @@ if(menu){ /* menu_btn */ cui_show(menu); - cui_main(menu, cui_index_to_child(menu, 0), NULL); + cui_main(menu, cui_index_to_child(menu, 0)); cui_hide(menu); cui_draw(menu->parent); return TRUE; @@ -231,7 +231,7 @@ cui_bind(menu, CUI_EVT_BUTTON, mn_hdr, prm); menu->flags &= ~CUI_FLG_HIDE; - cui_main(menu, cui_menu_str_to_item(menu, "Open"), NULL); + cui_main(menu, cui_menu_str_to_item(menu, "Open")); cui_hide(menu); cui_draw(menu->parent); cui_del(menu); @@ -439,7 +439,6 @@ cui tab_sheets[] = { base, bs_bar, sc_hoge, bs_term, bs_timer }; - void *timer_list = NULL; char lb_timer1_buf[16]; big_new(small2, 0, 0, &p); @@ -479,13 +478,13 @@ cui_bind(lb_timer1, CUI_EVT_TIMER, lb_timer_hdr, lb_timer1_buf); cui_bind(lb_timer2, CUI_EVT_TIMER, lb_timer_hdr, NULL); cui_bind(lb_timer3, CUI_EVT_TIMER, lb_timer_hdr, NULL); - cui_timer_set(lb_timer1, 1000, 0, &timer_list); - cui_timer_set(lb_timer2, 200, 0, &timer_list); - cui_timer_set(lb_timer3, 10*1000, 1, &timer_list); + cui_timer_set(lb_timer1, 1000, 0); + cui_timer_set(lb_timer2, 200, 0); + cui_timer_set(lb_timer3, 10*1000, 1); cui_tab_new(bs, 1, 1, -1, (char *[]){"foo", "bar", "hoge", "term", "timer", NULL}, tab_sheets, 0); - cui_main(bs, NULL, timer_list); + cui_main(bs, NULL); printf("result %s\n", p->btn_result); cui_free(bs); return 0; diff -urN cui80/menu.c cui81/menu.c --- cui80/menu.c Thu Mar 27 01:00:00 2014 +++ cui81/menu.c Thu Mar 27 22:00:00 2014 @@ -198,7 +198,7 @@ menu->x = cui_lx(cui_root(obj), cui_gx(obj)); menu->y = cui_ly(cui_root(obj), cui_gy(obj)) - p->val; menu->flags &= ~CUI_FLG_HIDE; - cui_main(menu, cui_index_to_child(menu, p->val), NULL); + cui_main(menu, cui_index_to_child(menu, p->val)); cui_hide(menu); if(p->val < 0) p->val = bak; else{ diff -urN cui80/term.c cui81/term.c --- cui80/term.c Wed Mar 26 23:00:00 2014 +++ cui81/term.c Thu Mar 27 22:00:00 2014 @@ -125,7 +125,7 @@ switch(evt){ case CUI_EVT_DRAW: - p->update_all =TRUE; + p->update_all = TRUE; hdr_update(obj); return TRUE; case CUI_EVT_RESIZE: diff -urN cui80/timer.c cui81/timer.c --- cui80/timer.c Thu Mar 27 01:00:00 2014 +++ cui81/timer.c Thu Mar 27 22:00:00 2014 @@ -4,13 +4,13 @@ #include #include +static cui_timer_list timer_list = NULL; + static cui_timer_list -cui_timer_search(cui obj, cui_timer_list **ret_prev, void *timer_list_ptr) +cui_timer_search(cui obj, cui_timer_list **ret_prev) { - cui_timer_list *lp = (cui_timer_list *)timer_list_ptr; - cui_timer_list p, *prev = lp; - - for(p=*prev; p; prev=&p->next, p=p->next){ + cui_timer_list p = timer_list, *prev = &timer_list; + for(; p; prev=&p->next, p=p->next){ if(p->obj == obj){ if(ret_prev) *ret_prev = prev; return p; @@ -47,42 +47,38 @@ } static void -cui_timer_del(cui obj, void *timer_list_ptr) +cui_timer_del(cui obj) { - cui_timer_list *prev, p = cui_timer_search(obj, &prev, timer_list_ptr); + cui_timer_list *prev, p = cui_timer_search(obj, &prev); if(p == NULL) return; *prev = p->next; free(p); } void -cui_timer_set(cui obj, int msec, int once, void *timer_list_ptr) +cui_timer_set(cui obj, int msec, int once) { - cui_timer_list *lp = (cui_timer_list *)timer_list_ptr; - cui_timer_list *prev, p = cui_timer_search(obj, &prev, timer_list_ptr); + cui_timer_list p = cui_timer_search(obj, NULL); if(p == NULL){ - if(lp == NULL) lp = (cui_timer_list *)cui_timer_list_ptr_get(); - if(lp) *lp = cui_timer_new(obj, msec, once, *lp); + timer_list = cui_timer_new(obj, msec, once, timer_list); return; } if(msec >= 0){ cui_timer_init(p, obj, msec, once, p->next); return; } - cui_timer_del(obj, timer_list_ptr); + cui_timer_del(obj); } void -cui_timer_work(void *timer_list_ptr) +cui_timer_work(void) { - int msec; - - cui_timer_list p = *(cui_timer_list *)timer_list_ptr; + cui_timer_list p = timer_list; for(; p; p=p->next){ - msec = cui_timer_now_msec(); + int msec = cui_timer_now_msec(); if(msec < p->targ_msec) continue; cui_handler_call(p->obj, CUI_EVT_TIMER, msec); - if(p->once) cui_timer_del(p->obj, timer_list_ptr); + if(p->once) cui_timer_del(p->obj); else p->targ_msec += p->msec; } } diff -urN cui80/timer.h cui81/timer.h --- cui80/timer.h Thu Mar 27 01:00:00 2014 +++ cui81/timer.h Thu Mar 27 22:00:00 2014 @@ -13,8 +13,8 @@ cui_timer_list next; }; -void cui_timer_set(cui obj, int msec, int once, void *timer_list_ptr); +void cui_timer_set(cui obj, int msec, int once); int cui_timer_now_msec(void); -void cui_timer_work(void *timer_list_ptr); +void cui_timer_work(void); #endif