hle: kernel: Reimplement KReadableEvent and KWritableEvent.

This commit is contained in:
bunnei 2021-01-31 01:38:57 -08:00
parent 6bf80dfee0
commit ff3c7c068b
38 changed files with 342 additions and 299 deletions

View file

@ -5,6 +5,9 @@
#include "common/hex_util.h"
#include "common/logging/log.h"
#include "core/core.h"
#include "core/hle/kernel/k_event.h"
#include "core/hle/kernel/k_readable_event.h"
#include "core/hle/kernel/k_writable_event.h"
#include "core/hle/lock.h"
#include "core/hle/service/bcat/backend/backend.h"
@ -12,12 +15,13 @@ namespace Service::BCAT {
ProgressServiceBackend::ProgressServiceBackend(Kernel::KernelCore& kernel,
std::string_view event_name) {
event = Kernel::KWritableEvent::CreateEventPair(
kernel, std::string("ProgressServiceBackend:UpdateEvent:").append(event_name));
event = Kernel::KEvent::Create(kernel,
"ProgressServiceBackend:UpdateEvent:" + std::string(event_name));
event->Initialize();
}
std::shared_ptr<Kernel::KReadableEvent> ProgressServiceBackend::GetEvent() const {
return event.readable;
return event->GetReadableEvent();
}
DeliveryCacheProgressImpl& ProgressServiceBackend::GetImpl() {
@ -85,9 +89,9 @@ void ProgressServiceBackend::FinishDownload(ResultCode result) {
void ProgressServiceBackend::SignalUpdate() const {
if (need_hle_lock) {
std::lock_guard lock(HLE::g_hle_lock);
event.writable->Signal();
event->GetWritableEvent()->Signal();
} else {
event.writable->Signal();
event->GetWritableEvent()->Signal();
}
}

View file

@ -11,8 +11,6 @@
#include "common/common_types.h"
#include "core/file_sys/vfs_types.h"
#include "core/hle/kernel/k_readable_event.h"
#include "core/hle/kernel/k_writable_event.h"
#include "core/hle/result.h"
namespace Core {
@ -21,7 +19,9 @@ class System;
namespace Kernel {
class KernelCore;
}
class KEvent;
class KReadableEvent;
} // namespace Kernel
namespace Service::BCAT {
@ -104,7 +104,7 @@ private:
void SignalUpdate() const;
DeliveryCacheProgressImpl impl{};
Kernel::EventPair event;
std::shared_ptr<Kernel::KEvent> event;
bool need_hle_lock = false;
};