hle: kernel: Refactor several threads/events/sharedmemory to use slab heaps.
This commit is contained in:
parent
b6156e735c
commit
89edbe8aa2
11 changed files with 53 additions and 59 deletions
|
@ -253,8 +253,7 @@ void Controller_NPad::InitNewlyAddedController(std::size_t controller_idx) {
|
|||
void Controller_NPad::OnInit() {
|
||||
auto& kernel = system.Kernel();
|
||||
for (std::size_t i = 0; i < styleset_changed_events.size(); ++i) {
|
||||
styleset_changed_events[i] = std::make_unique<Kernel::KEvent>(kernel);
|
||||
Kernel::KAutoObject::Create(styleset_changed_events[i].get());
|
||||
styleset_changed_events[i] = Kernel::KEvent::Create(kernel);
|
||||
styleset_changed_events[i]->Initialize(fmt::format("npad:NpadStyleSetChanged_{}", i));
|
||||
}
|
||||
|
||||
|
@ -341,6 +340,11 @@ void Controller_NPad::OnRelease() {
|
|||
VibrateControllerAtIndex(npad_idx, device_idx, {});
|
||||
}
|
||||
}
|
||||
|
||||
for (std::size_t i = 0; i < styleset_changed_events.size(); ++i) {
|
||||
styleset_changed_events[i]->Close();
|
||||
styleset_changed_events[i] = nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
void Controller_NPad::RequestPadStateUpdate(u32 npad_id) {
|
||||
|
|
|
@ -573,8 +573,9 @@ private:
|
|||
NpadHandheldActivationMode handheld_activation_mode{NpadHandheldActivationMode::Dual};
|
||||
NpadCommunicationMode communication_mode{NpadCommunicationMode::Default};
|
||||
// Each controller should have their own styleset changed event
|
||||
std::array<std::unique_ptr<Kernel::KEvent>, 10> styleset_changed_events;
|
||||
std::array<std::array<std::chrono::steady_clock::time_point, 2>, 10> last_vibration_timepoints;
|
||||
std::array<Kernel::KEvent*, 10> styleset_changed_events{};
|
||||
std::array<std::array<std::chrono::steady_clock::time_point, 2>, 10>
|
||||
last_vibration_timepoints{};
|
||||
std::array<std::array<VibrationValue, 2>, 10> latest_vibration_values{};
|
||||
bool permit_vibration_session_enabled{false};
|
||||
std::array<std::array<bool, 2>, 10> vibration_devices_mounted{};
|
||||
|
|
|
@ -42,8 +42,7 @@ void InstallInterfaces(SM::ServiceManager& service_manager, NVFlinger::NVFlinger
|
|||
Module::Module(Core::System& system) : syncpoint_manager{system.GPU()} {
|
||||
auto& kernel = system.Kernel();
|
||||
for (u32 i = 0; i < MaxNvEvents; i++) {
|
||||
events_interface.events[i].event = std::make_unique<Kernel::KEvent>(kernel);
|
||||
Kernel::KAutoObject::Create(events_interface.events[i].event.get());
|
||||
events_interface.events[i].event = Kernel::KEvent::Create(kernel);
|
||||
events_interface.events[i].event->Initialize(fmt::format("NVDRV::NvEvent_{}", i));
|
||||
events_interface.status[i] = EventState::Free;
|
||||
events_interface.registered[i] = false;
|
||||
|
|
|
@ -35,7 +35,7 @@ class nvdevice;
|
|||
|
||||
/// Represents an Nvidia event
|
||||
struct NvEvent {
|
||||
std::unique_ptr<Kernel::KEvent> event;
|
||||
Kernel::KEvent* event{};
|
||||
Fence fence{};
|
||||
};
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue