event.h 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. // Copyright 2014 Citra Emulator Project
  2. // Licensed under GPLv2 or any later version
  3. // Refer to the license.txt file included.
  4. #pragma once
  5. #include "common/common_types.h"
  6. #include "core/hle/kernel/kernel.h"
  7. namespace Kernel {
  8. class Event final : public WaitObject {
  9. public:
  10. /**
  11. * Creates an event
  12. * @param reset_type ResetType describing how to create event
  13. * @param name Optional name of event
  14. */
  15. static SharedPtr<Event> Create(ResetType reset_type, std::string name = "Unknown");
  16. std::string GetTypeName() const override {
  17. return "Event";
  18. }
  19. std::string GetName() const override {
  20. return name;
  21. }
  22. static const HandleType HANDLE_TYPE = HandleType::Event;
  23. HandleType GetHandleType() const override {
  24. return HANDLE_TYPE;
  25. }
  26. ResetType reset_type; ///< Current ResetType
  27. bool signaled; ///< Whether the event has already been signaled
  28. std::string name; ///< Name of event (optional)
  29. bool ShouldWait() override;
  30. void Acquire() override;
  31. void Signal();
  32. void Clear();
  33. private:
  34. Event();
  35. ~Event() override;
  36. };
  37. } // namespace