CmRenderWindowManager.cpp 993 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. #include "CmRenderWindowManager.h"
  2. namespace CamelotFramework
  3. {
  4. RenderWindowPtr RenderWindowManager::create(RENDER_WINDOW_DESC& desc, RenderWindowPtr parentWindow)
  5. {
  6. RenderWindowPtr renderWindow = createImpl(desc, parentWindow);
  7. renderWindow->setThisPtr(renderWindow);
  8. renderWindow->initialize();
  9. {
  10. CM_LOCK_MUTEX(mWindowMutex);
  11. mCreatedWindows.push_back(renderWindow.get());
  12. }
  13. return renderWindow;
  14. }
  15. void RenderWindowManager::windowDestroyed(RenderWindow* window)
  16. {
  17. {
  18. CM_LOCK_MUTEX(mWindowMutex);
  19. auto iterFind = std::find(begin(mCreatedWindows), end(mCreatedWindows), window);
  20. if(iterFind == mCreatedWindows.end())
  21. CM_EXCEPT(InternalErrorException, "Trying to destroy a window that is not in the created windows list.");
  22. mCreatedWindows.erase(iterFind);
  23. }
  24. }
  25. vector<RenderWindow*>::type RenderWindowManager::getRenderWindows() const
  26. {
  27. CM_LOCK_MUTEX(mWindowMutex);
  28. return mCreatedWindows;
  29. }
  30. }