MCPcopy Create free account
hub / github.com/axmolengine/axmol / unschedule

Method unschedule

core/base/Scheduler.cpp:296–344  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

294}
295
296void Scheduler::unschedule(std::string_view key, void* target)
297{
298 // explicit handle nil arguments when removing an object
299 if (target == nullptr || key.empty())
300 {
301 return;
302 }
303
304 auto timerIt = _timersMap.find(target);
305 if (timerIt != _timersMap.end())
306 {
307 auto& timerHandle = timerIt->second;
308 for (int i = 0; i < timerHandle.timers.size(); ++i)
309 {
310 TimerTargetCallback* timer = dynamic_cast<TimerTargetCallback*>(timerHandle.timers[i]);
311
312 if (timer && key == timer->getKey())
313 {
314 if (timer == timerHandle.currentTimer && (!timer->isAborted()))
315 {
316 timer->retain();
317 timer->setAborted();
318 }
319
320 timerHandle.timers.erase(i);
321
322 // update timerIndex in case we are in tick:, looping over the actions
323 if (timerHandle.timerIndex >= i)
324 {
325 timerHandle.timerIndex--;
326 }
327
328 if (timerHandle.timers.empty())
329 {
330 if (_currentTarget == &timerHandle)
331 {
332 _currentTargetSalvaged = true;
333 }
334 else
335 {
336 _timersMap.erase(timerIt);
337 }
338 }
339
340 return;
341 }
342 }
343 }
344}
345
346void Scheduler::priorityIn(axstd::pod_vector<SchedHandle*>& list,
347 const ccSchedulerFunc& callback,

Callers 2

killMethod · 0.45
cancelMethod · 0.45

Calls 8

isAbortedMethod · 0.80
setAbortedMethod · 0.80
emptyMethod · 0.45
findMethod · 0.45
endMethod · 0.45
sizeMethod · 0.45
retainMethod · 0.45
eraseMethod · 0.45

Tested by

no test coverage detected