CmDeferredCallManager.cpp 702 B

1234567891011121314151617181920212223242526272829303132333435
  1. #include "CmDeferredCallManager.h"
  2. namespace CamelotFramework
  3. {
  4. DeferredCallManager::DeferredCallManager()
  5. {
  6. }
  7. void DeferredCallManager::queueDeferredCall(std::function<void()> func)
  8. {
  9. mCallbacks.push_back(func);
  10. }
  11. void DeferredCallManager::update()
  12. {
  13. while(!mCallbacks.empty())
  14. {
  15. // Copy because callbacks can be queued within callbacks
  16. Vector<std::function<void()>>::type callbackCopy = mCallbacks;
  17. mCallbacks.clear();
  18. for(auto& call : callbackCopy)
  19. {
  20. call();
  21. }
  22. }
  23. }
  24. // Declared in CmPrerequisites.h
  25. void deferredCall(std::function<void()> callback)
  26. {
  27. DeferredCallManager::instance().queueDeferredCall(callback);
  28. }
  29. }