@@ -68,7 +68,7 @@ return function(...)
6868 local co = coroutine.create (f )
6969 local ok , result = coroutine.resume (co , ... )
7070 if (ok )then
71- table.insert (schedules , co )
71+ table.insert (schedules , { co , result } )
7272 else
7373 basaltError (result )
7474 end
@@ -154,15 +154,26 @@ local bInstance = {
154154 end
155155}
156156
157- local function handleSchedules (event , p1 , p2 , p3 , p4 )
157+ local function handleSchedules (event , ... )
158158 if (# schedules > 0 )then
159159 local finished = {}
160160 for n = 1 ,# schedules do
161161 if (schedules [n ]~= nil )then
162- if (coroutine.status (schedules [n ]) == " suspended" )then
163- local ok , result = coroutine.resume (schedules [n ], event , p1 , p2 , p3 , p4 )
164- if not (ok )then
165- basaltError (result )
162+ if (coroutine.status (schedules [n ][1 ]) == " suspended" )then
163+ if (schedules [n ][2 ]~= nil )then
164+ if (schedules [n ][2 ]== event )then
165+ local ok , result = coroutine.resume (schedules [n ][1 ], event , ... )
166+ schedules [n ][2 ] = result
167+ if not (ok )then
168+ basaltError (result )
169+ end
170+ end
171+ else
172+ local ok , result = coroutine.resume (schedules [n ][1 ], event , ... )
173+ schedules [n ][2 ] = result
174+ if not (ok )then
175+ basaltError (result )
176+ end
166177 end
167178 else
168179 table.insert (finished , n )
@@ -240,6 +251,7 @@ local function basaltUpdateEvent(event, ...)
240251 local mouseEvent = mouseEvents [event ]
241252 if (mouseEvent ~= nil )then
242253 mouseEvent (mainFrame , ... )
254+ handleSchedules (event , ... )
243255 drawFrames ()
244256 return
245257 end
@@ -255,6 +267,7 @@ local function basaltUpdateEvent(event, ...)
255267 v [1 ]:mouseHandler (1 , a [2 ], a [3 ], true , a [1 ])
256268 end
257269 end
270+ handleSchedules (event , ... )
258271 drawFrames ()
259272 return
260273 end
@@ -273,6 +286,7 @@ local function basaltUpdateEvent(event, ...)
273286 activeKey [a [1 ]] = false
274287 end
275288 keyEvent (activeFrame , ... )
289+ handleSchedules (event , ... )
276290 drawFrames ()
277291 return
278292 end
0 commit comments