var list = X_Timer_TICKET_LIST,\r
i = list.length,\r
l = i,\r
- f, q;\r
+ f, q, eventDispatcher, lazy, listeners;\r
// fire 中の cancel\r
if( X_Timer_busyTimeout ){\r
if( !X_Timer_removal ) X_Timer_removal = {};\r
for( ; i; ){\r
if( ( q = list[ --i ] ).uid === uid ){\r
list.splice( i, 1 );\r
+ \r
+ /*\r
+ * lazyDispatch 中の EventDispatcher の有無を調べる\r
+ */\r
+ if( X_EventDispatcher_LAZY_TIMERS[ uid ] ){\r
+ eventDispatcher = X_EventDispatcher_LAZY_TIMERS[ uid ];\r
+ delete X_EventDispatcher_LAZY_TIMERS[ uid ];\r
+ \r
+ listeners = eventDispatcher[ '_listeners' ];\r
+ if( listeners && !listeners._dispatching && listeners._killReserved ){\r
+ for( uid in X_EventDispatcher_LAZY_TIMERS ){\r
+ if( X_EventDispatcher_LAZY_TIMERS[ uid ] === eventDispatcher ){\r
+ lazy = true;\r
+ break;\r
+ };\r
+ }; \r
+ !lazy && eventDispatcher.kill();\r
+ };\r
+ };\r
+ \r
!X_Timer_skipUpdate && ( q.last <= X_Timer_waitTime || l === 1 ) && X_Timer_update();\r
break;\r
};\r