3 changed files with 91 additions and 0 deletions
@ -0,0 +1,32 @@ |
|||
// Copyright 2021 yuzu emulator team
|
|||
// Licensed under GPLv2 or any later version
|
|||
// Refer to the license.txt file included.
|
|||
|
|||
#include "core/hle/kernel/k_event.h"
|
|||
#include "core/hle/kernel/k_readable_event.h"
|
|||
#include "core/hle/kernel/k_writable_event.h"
|
|||
|
|||
namespace Kernel { |
|||
|
|||
KEvent::KEvent(KernelCore& kernel, std::string&& name) : Object{kernel, std::move(name)} {} |
|||
|
|||
KEvent::~KEvent() = default; |
|||
|
|||
std::shared_ptr<KEvent> KEvent::Create(KernelCore& kernel, std::string&& name) { |
|||
return std::make_shared<KEvent>(kernel, std::move(name)); |
|||
} |
|||
|
|||
void KEvent::Initialize() { |
|||
// Create our sub events.
|
|||
readable_event = std::make_shared<KReadableEvent>(kernel, GetName() + ":Readable"); |
|||
writable_event = std::make_shared<KWritableEvent>(kernel, GetName() + ":Writable"); |
|||
|
|||
// Initialize our sub sessions.
|
|||
readable_event->Initialize(this); |
|||
writable_event->Initialize(this); |
|||
|
|||
// Mark initialized.
|
|||
initialized = true; |
|||
} |
|||
|
|||
} // namespace Kernel
|
|||
@ -0,0 +1,57 @@ |
|||
// Copyright 2021 yuzu emulator team |
|||
// Licensed under GPLv2 or any later version |
|||
// Refer to the license.txt file included. |
|||
|
|||
#pragma once |
|||
|
|||
#include "core/hle/kernel/object.h" |
|||
|
|||
namespace Kernel { |
|||
|
|||
class KernelCore; |
|||
class KReadableEvent; |
|||
class KWritableEvent; |
|||
|
|||
class KEvent final : public Object { |
|||
public: |
|||
explicit KEvent(KernelCore& kernel, std::string&& name); |
|||
~KEvent() override; |
|||
|
|||
static std::shared_ptr<KEvent> Create(KernelCore& kernel, std::string&& name); |
|||
|
|||
void Initialize(); |
|||
|
|||
void Finalize() override {} |
|||
|
|||
std::string GetTypeName() const override { |
|||
return "KEvent"; |
|||
} |
|||
|
|||
static constexpr HandleType HANDLE_TYPE = HandleType::Event; |
|||
HandleType GetHandleType() const override { |
|||
return HANDLE_TYPE; |
|||
} |
|||
|
|||
std::shared_ptr<KReadableEvent>& GetReadableEvent() { |
|||
return readable_event; |
|||
} |
|||
|
|||
std::shared_ptr<KWritableEvent>& GetWritableEvent() { |
|||
return writable_event; |
|||
} |
|||
|
|||
const std::shared_ptr<KReadableEvent>& GetReadableEvent() const { |
|||
return readable_event; |
|||
} |
|||
|
|||
const std::shared_ptr<KWritableEvent>& GetWritableEvent() const { |
|||
return writable_event; |
|||
} |
|||
|
|||
private: |
|||
std::shared_ptr<KReadableEvent> readable_event; |
|||
std::shared_ptr<KWritableEvent> writable_event; |
|||
bool initialized{}; |
|||
}; |
|||
|
|||
} // namespace Kernel |
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue