EventLoopImplementationQt.h 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. /*
  2. * Copyright (c) 2022-2023, Andreas Kling <kling@serenityos.org>
  3. *
  4. * SPDX-License-Identifier: BSD-2-Clause
  5. */
  6. #pragma once
  7. #include <AK/HashMap.h>
  8. #include <AK/NonnullOwnPtr.h>
  9. #include <AK/OwnPtr.h>
  10. #include <LibCore/EventLoopImplementation.h>
  11. #include <QEventLoop>
  12. #include <QSocketNotifier>
  13. #include <QTimer>
  14. namespace Ladybird {
  15. class EventLoopImplementationQt final : public Core::EventLoopImplementation {
  16. public:
  17. static NonnullOwnPtr<EventLoopImplementationQt> create() { return adopt_own(*new EventLoopImplementationQt); }
  18. virtual ~EventLoopImplementationQt() override;
  19. virtual int exec() override;
  20. virtual size_t pump(PumpMode) override;
  21. virtual void quit(int) override;
  22. virtual void wake() override;
  23. virtual void deferred_invoke(Function<void()>) override;
  24. virtual int register_timer(Core::Object&, int milliseconds, bool should_reload, Core::TimerShouldFireWhenNotVisible) override;
  25. virtual bool unregister_timer(int timer_id) override;
  26. virtual void register_notifier(Core::Notifier&) override;
  27. virtual void unregister_notifier(Core::Notifier&) override;
  28. // FIXME: These APIs only exist for obscure use-cases inside SerenityOS. Try to get rid of them.
  29. virtual void unquit() override { }
  30. virtual bool was_exit_requested() const override { return false; }
  31. virtual void notify_forked_and_in_child() override { }
  32. virtual int register_signal(int, Function<void(int)>) override { return 0; }
  33. virtual void unregister_signal(int) override { }
  34. protected:
  35. EventLoopImplementationQt();
  36. private:
  37. QEventLoop m_event_loop;
  38. Optional<int> m_exit_code;
  39. };
  40. }