static void DestroyEvent( void *data ) { LCUI_Event *event = (LCUI_Event*)data; if( event->destroy_data ) { event->destroy_data( event->data ); } }
/** 派发当前待处理的事件至对应的处理器 */ int $(Dispatch)( LCUI_EventBox box ) { int i, n; LCUI_Event *e; LinkedList *elist; box->current = box->current ? 0:1; elist = &box->events[box->current ? 0:1]; n = LinkedList_GetTotal( elist ); LinkedList_Goto( elist, 0 ); for( i=0; i<n; ++i ) { e = (LCUI_Event*)LinkedList_Get( elist ); $(Send)( box, e->name, e->data ); e->destroy_data ? e->destroy_data( e->data ):0; LinkedList_Goto( elist, 0 ); LinkedList_Delete( elist ); } box->current = box->current ? 0:1; return 0; }
/** 派发当前待处理的事件至对应的处理器 */ int $(Dispatch)( LCUI_EventBox box ) { int i, n; LCUI_Event *e; LinkedList *elist; elist = &box->events[box->current]; box->current = box->current ? 0:1; n = LinkedList_GetTotal( elist ); LinkedList_Goto( elist, 0 ); DEBUG_MSG("event total: %d\n", n); for( i=0; i<n; ++i ) { e = (LCUI_Event*)LinkedList_Get( elist ); $(Send)( box, e->name, e->data ); e->destroy_data ? e->destroy_data( e->data ):0; e->data = NULL; LinkedList_Goto( elist, 0 ); LinkedList_Delete( elist ); } DEBUG_MSG("quit\n"); return 0; }