EventLoopImplementation.cpp 1017 B

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. /*
  2. * Copyright (c) 2023, Andreas Kling <andreas@ladybird.org>
  3. *
  4. * SPDX-License-Identifier: BSD-2-Clause
  5. */
  6. #include <AK/NonnullOwnPtr.h>
  7. #include <LibCore/Event.h>
  8. #include <LibCore/EventLoopImplementation.h>
  9. #include <LibCore/ThreadEventQueue.h>
  10. #ifdef AK_OS_WINDOWS
  11. # include <LibCore/EventLoopImplementationWindows.h>
  12. #else
  13. # include <LibCore/EventLoopImplementationUnix.h>
  14. #endif
  15. namespace Core {
  16. EventLoopImplementation::EventLoopImplementation()
  17. : m_thread_event_queue(ThreadEventQueue::current())
  18. {
  19. }
  20. EventLoopImplementation::~EventLoopImplementation() = default;
  21. static EventLoopManager* s_event_loop_manager;
  22. EventLoopManager& EventLoopManager::the()
  23. {
  24. if (!s_event_loop_manager)
  25. s_event_loop_manager = new EventLoopManagerPlatform;
  26. return *s_event_loop_manager;
  27. }
  28. void EventLoopManager::install(Core::EventLoopManager& manager)
  29. {
  30. s_event_loop_manager = &manager;
  31. }
  32. EventLoopManager::EventLoopManager() = default;
  33. EventLoopManager::~EventLoopManager() = default;
  34. }