[video_core, hle] remove redundant parent references in system structs (#3908)

reworked a bit to remove references of parent objects and instead pass as arguments to methods to prevent useless reloads

Signed-off-by: lizzie <lizzie@eden-emu.dev>
Co-authored-by: maufeat <sahyno1996@gmail.com>
Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/3908
Reviewed-by: Maufeat <sahyno1996@gmail.com>
Reviewed-by: crueter <crueter@eden-emu.dev>
This commit is contained in:
lizzie
2026-06-23 06:31:25 +02:00
committed by crueter
parent f8facda35f
commit 3aa0d46259
307 changed files with 4419 additions and 4477 deletions
@@ -1,4 +1,4 @@
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
@@ -16,7 +16,9 @@
namespace Service::HID {
NpadAbstractBatteryHandler::NpadAbstractBatteryHandler() {}
NpadAbstractBatteryHandler::NpadAbstractBatteryHandler(Kernel::KernelCore& kernel_)
: kernel{kernel_}
{}
NpadAbstractBatteryHandler::~NpadAbstractBatteryHandler() = default;
@@ -1,3 +1,6 @@
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
@@ -7,6 +10,10 @@
#include "core/hle/result.h"
#include "hid_core/hid_types.h"
namespace Kernel {
class KernelCore;
}
namespace Service::HID {
struct AppletResourceHolder;
class NpadAbstractedPadHolder;
@@ -15,7 +22,7 @@ class NpadAbstractPropertiesHandler;
/// Handles Npad request from HID interfaces
class NpadAbstractBatteryHandler final {
public:
explicit NpadAbstractBatteryHandler();
explicit NpadAbstractBatteryHandler(Kernel::KernelCore& kernel_);
~NpadAbstractBatteryHandler();
void SetAbstractPadHolder(NpadAbstractedPadHolder* holder);
@@ -44,6 +51,7 @@ private:
Core::HID::NpadPowerInfo left_battery{};
Core::HID::NpadPowerInfo right_battery{};
bool has_new_battery_data{};
Kernel::KernelCore& kernel;
};
} // namespace Service::HID
@@ -1,4 +1,4 @@
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
@@ -16,7 +16,9 @@
namespace Service::HID {
NpadAbstractButtonHandler::NpadAbstractButtonHandler() {}
NpadAbstractButtonHandler::NpadAbstractButtonHandler(Kernel::KernelCore& kernel_)
: kernel{kernel_}
{}
NpadAbstractButtonHandler::~NpadAbstractButtonHandler() = default;
@@ -1,3 +1,6 @@
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
@@ -7,6 +10,10 @@
#include "core/hle/result.h"
#include "hid_core/hid_types.h"
namespace Kernel {
class KernelCore;
}
namespace Service::HID {
struct NpadSharedMemoryEntry;
@@ -17,7 +24,7 @@ class NpadAbstractPropertiesHandler;
/// Handles Npad request from HID interfaces
class NpadAbstractButtonHandler final {
public:
explicit NpadAbstractButtonHandler();
explicit NpadAbstractButtonHandler(Kernel::KernelCore& kernel_);
~NpadAbstractButtonHandler();
void SetAbstractPadHolder(NpadAbstractedPadHolder* holder);
@@ -70,6 +77,7 @@ private:
u64 gc_sampling_number{};
GcTrigger gc_trigger_state{};
Kernel::KernelCore& kernel;
};
} // namespace Service::HID
@@ -1,4 +1,4 @@
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
@@ -14,7 +14,9 @@
namespace Service::HID {
NpadAbstractIrSensorHandler::NpadAbstractIrSensorHandler() {}
NpadAbstractIrSensorHandler::NpadAbstractIrSensorHandler(Kernel::KernelCore& kernel_)
: kernel{kernel_}
{}
NpadAbstractIrSensorHandler::~NpadAbstractIrSensorHandler() = default;
@@ -52,7 +54,7 @@ void NpadAbstractIrSensorHandler::UpdateIrSensorState() {
if (sensor_state == previous_state) {
return;
}
ir_sensor_event->Signal();
ir_sensor_event->Signal(kernel);
return;
}
@@ -77,7 +79,7 @@ void NpadAbstractIrSensorHandler::UpdateIrSensorState() {
if (sensor_state == previous_state) {
return;
}
ir_sensor_event->Signal();
ir_sensor_event->Signal(kernel);
return;
}
@@ -86,7 +88,7 @@ void NpadAbstractIrSensorHandler::UpdateIrSensorState() {
return;
}
ir_sensor_event->Signal();
ir_sensor_event->Signal(kernel);
return;
}
@@ -105,7 +107,7 @@ Result NpadAbstractIrSensorHandler::ActivateIrSensor(bool is_enabled) {
}
sensor_state = NpadIrSensorState::Available;
}
ir_sensor_event->Signal();
ir_sensor_event->Signal(kernel);
return ResultSuccess;
}
@@ -1,3 +1,6 @@
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
@@ -12,6 +15,7 @@ class EmulatedController;
}
namespace Kernel {
class KernelCore;
class KEvent;
class KReadableEvent;
} // namespace Kernel
@@ -30,7 +34,7 @@ class NpadAbstractPropertiesHandler;
/// Handles Npad request from HID interfaces
class NpadAbstractIrSensorHandler final {
public:
explicit NpadAbstractIrSensorHandler();
explicit NpadAbstractIrSensorHandler(Kernel::KernelCore& kernel_);
~NpadAbstractIrSensorHandler();
void SetAbstractPadHolder(NpadAbstractedPadHolder* holder);
@@ -56,5 +60,6 @@ private:
Kernel::KEvent* ir_sensor_event{nullptr};
Core::HID::EmulatedController* xcd_handle{};
NpadIrSensorState sensor_state{};
Kernel::KernelCore& kernel;
};
} // namespace Service::HID
@@ -1,4 +1,4 @@
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
@@ -15,7 +15,9 @@
namespace Service::HID {
NpadAbstractLedHandler::NpadAbstractLedHandler() {}
NpadAbstractLedHandler::NpadAbstractLedHandler(Kernel::KernelCore& kernel_)
: kernel{kernel_}
{}
NpadAbstractLedHandler::~NpadAbstractLedHandler() = default;
@@ -1,3 +1,6 @@
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
@@ -7,6 +10,10 @@
#include "core/hle/result.h"
#include "hid_core/hid_types.h"
namespace Kernel {
class KernelCore;
}
namespace Service::HID {
struct AppletResourceHolder;
class NpadAbstractedPadHolder;
@@ -15,7 +22,7 @@ class NpadAbstractPropertiesHandler;
/// Handles Npad request from HID interfaces
class NpadAbstractLedHandler final {
public:
explicit NpadAbstractLedHandler();
explicit NpadAbstractLedHandler(Kernel::KernelCore& kernel_);
~NpadAbstractLedHandler();
void SetAbstractPadHolder(NpadAbstractedPadHolder* holder);
@@ -39,5 +46,6 @@ private:
Core::HID::LedPattern left_pattern{0, 0, 0, 0};
Core::HID::LedPattern right_pattern{0, 0, 0, 0};
u64 led_interval{};
Kernel::KernelCore& kernel;
};
} // namespace Service::HID
@@ -1,4 +1,4 @@
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
@@ -12,7 +12,9 @@
namespace Service::HID {
NpadAbstractMcuHandler::NpadAbstractMcuHandler() {}
NpadAbstractMcuHandler::NpadAbstractMcuHandler(Kernel::KernelCore& kernel_)
: kernel{kernel_}
{}
NpadAbstractMcuHandler::~NpadAbstractMcuHandler() = default;
@@ -1,3 +1,6 @@
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
@@ -7,6 +10,10 @@
#include "core/hle/result.h"
#include "hid_core/hid_types.h"
namespace Kernel {
class KernelCore;
}
namespace Service::HID {
struct IAbstractedPad;
class NpadAbstractedPadHolder;
@@ -28,7 +35,7 @@ static_assert(sizeof(NpadMcuHolder) == 0x10, "NpadMcuHolder is an invalid size")
/// Handles Npad request from HID interfaces
class NpadAbstractMcuHandler final {
public:
explicit NpadAbstractMcuHandler();
explicit NpadAbstractMcuHandler(Kernel::KernelCore& kernel_);
~NpadAbstractMcuHandler();
void SetAbstractPadHolder(NpadAbstractedPadHolder* holder);
@@ -48,5 +55,6 @@ private:
s32 ref_counter{};
std::array<NpadMcuHolder, 2> mcu_holder{};
Kernel::KernelCore& kernel;
};
} // namespace Service::HID
@@ -1,4 +1,4 @@
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
@@ -14,7 +14,9 @@
namespace Service::HID {
NpadAbstractNfcHandler::NpadAbstractNfcHandler() {}
NpadAbstractNfcHandler::NpadAbstractNfcHandler(Kernel::KernelCore& kernel_)
: kernel{kernel_}
{}
NpadAbstractNfcHandler::~NpadAbstractNfcHandler() = default;
@@ -48,13 +50,13 @@ void NpadAbstractNfcHandler::UpdateNfcState() {
if (count == 0) {
if (sensor_state == NpadNfcState::Active) {
nfc_activate_event->Signal();
nfc_activate_event->Signal(kernel);
}
if (sensor_state == NpadNfcState::Unavailable) {
return;
}
sensor_state = NpadNfcState::Unavailable;
input_event->Signal();
input_event->Signal(kernel);
return;
}
@@ -79,19 +81,18 @@ void NpadAbstractNfcHandler::UpdateNfcState() {
return;
}
sensor_state = NpadNfcState::Available;
input_event->Signal();
input_event->Signal(kernel);
return;
}
if (sensor_state == NpadNfcState::Active) {
nfc_activate_event->Signal();
nfc_activate_event->Signal(kernel);
}
if (sensor_state == NpadNfcState::Unavailable) {
return;
}
sensor_state = NpadNfcState::Unavailable;
input_event->Signal();
return;
input_event->Signal(kernel);
}
bool NpadAbstractNfcHandler::HasNfcSensor() {
@@ -123,7 +124,7 @@ Result NpadAbstractNfcHandler::ActivateNfc(bool is_enabled) {
}
if (sensor_state != new_state) {
sensor_state = new_state;
nfc_activate_event->Signal();
nfc_activate_event->Signal(kernel);
}
return ResultSuccess;
}
@@ -1,3 +1,6 @@
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
@@ -8,7 +11,9 @@
#include "hid_core/hid_types.h"
namespace Kernel {
class KernelCore;
class KReadableEvent;
class KEvent;
}
enum class NpadNfcState : u32 {
@@ -24,7 +29,7 @@ class NpadAbstractPropertiesHandler;
/// Handles Npad request from HID interfaces
class NpadAbstractNfcHandler final {
public:
explicit NpadAbstractNfcHandler();
explicit NpadAbstractNfcHandler(Kernel::KernelCore& kernel_);
~NpadAbstractNfcHandler();
void SetAbstractPadHolder(NpadAbstractedPadHolder* holder);
@@ -53,5 +58,6 @@ private:
Kernel::KEvent* input_event{nullptr};
u64 xcd_handle{};
NpadNfcState sensor_state{NpadNfcState::Unavailable};
Kernel::KernelCore& kernel;
};
} // namespace Service::HID
@@ -1,4 +1,4 @@
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
@@ -12,7 +12,20 @@
namespace Service::HID {
AbstractPad::AbstractPad() {}
AbstractPad::AbstractPad(Kernel::KernelCore& kernel_)
//: abstract_pad_holder{kernel_}
: properties_handler{kernel_}
, led_handler{kernel_}
, ir_sensor_handler{kernel_}
, nfc_handler{kernel_}
, mcu_handler{kernel_}
, vibration_handler{kernel_}
, sixaxis_handler{kernel_}
, button_handler{kernel_}
, battery_handler{kernel_}
, palma_handler{kernel_}
, kernel{kernel_}
{}
AbstractPad::~AbstractPad() = default;
@@ -1,3 +1,6 @@
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
@@ -27,6 +30,10 @@
#include "hid_core/resources/vibration/n64_vibration_device.h"
#include "hid_core/resources/vibration/vibration_device.h"
namespace Kernel {
class KernelCore;
}
namespace Service::HID {
class AppletResource;
class SixAxisResource;
@@ -49,7 +56,7 @@ struct HandheldConfig;
/// Handles Npad request from HID interfaces
class AbstractPad final {
public:
explicit AbstractPad();
explicit AbstractPad(Kernel::KernelCore& kernel_);
~AbstractPad();
void SetExternals(AppletResourceHolder* applet_resource,
@@ -88,17 +95,19 @@ public:
private:
AppletResourceHolder* applet_resource_holder{nullptr};
// TODO: fix
NpadAbstractedPadHolder abstract_pad_holder{};
NpadAbstractPropertiesHandler properties_handler{};
NpadAbstractLedHandler led_handler{};
NpadAbstractIrSensorHandler ir_sensor_handler{};
NpadAbstractNfcHandler nfc_handler{};
NpadAbstractMcuHandler mcu_handler{};
NpadAbstractVibrationHandler vibration_handler{};
NpadAbstractSixAxisHandler sixaxis_handler{};
NpadAbstractButtonHandler button_handler{};
NpadAbstractBatteryHandler battery_handler{};
NpadAbstractPalmaHandler palma_handler{};
NpadAbstractPropertiesHandler properties_handler;
NpadAbstractLedHandler led_handler;
NpadAbstractIrSensorHandler ir_sensor_handler;
NpadAbstractNfcHandler nfc_handler;
NpadAbstractMcuHandler mcu_handler;
NpadAbstractVibrationHandler vibration_handler;
NpadAbstractSixAxisHandler sixaxis_handler;
NpadAbstractButtonHandler button_handler;
NpadAbstractBatteryHandler battery_handler;
NpadAbstractPalmaHandler palma_handler;
NpadN64VibrationDevice vibration_n64{};
NpadVibrationDevice vibration_left{};
@@ -114,6 +123,7 @@ private:
s32 ref_counter{};
Core::HID::NpadInterfaceType interface_type{Core::HID::NpadInterfaceType::None};
Kernel::KernelCore& kernel;
};
using FullAbstractPad = std::array<AbstractPad, MaxSupportedNpadIdTypes>;
@@ -1,4 +1,4 @@
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
@@ -10,7 +10,9 @@
namespace Service::HID {
NpadAbstractPalmaHandler::NpadAbstractPalmaHandler() {}
NpadAbstractPalmaHandler::NpadAbstractPalmaHandler(Kernel::KernelCore& kernel_)
: kernel{kernel_}
{}
NpadAbstractPalmaHandler::~NpadAbstractPalmaHandler() = default;
@@ -1,3 +1,6 @@
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
@@ -7,6 +10,10 @@
#include "core/hle/result.h"
#include "hid_core/hid_types.h"
namespace Kernel {
class KernelCore;
}
namespace Service::HID {
class NpadAbstractedPadHolder;
class NpadAbstractPropertiesHandler;
@@ -14,7 +21,7 @@ class PalmaResource;
class NpadAbstractPalmaHandler final {
public:
explicit NpadAbstractPalmaHandler();
explicit NpadAbstractPalmaHandler(Kernel::KernelCore& kernel_);
~NpadAbstractPalmaHandler();
void SetAbstractPadHolder(NpadAbstractedPadHolder* holder);
@@ -32,6 +39,7 @@ private:
PalmaResource* palma_resource{nullptr};
s32 ref_counter{};
Kernel::KernelCore& kernel;
};
} // namespace Service::HID
@@ -1,4 +1,4 @@
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
@@ -14,7 +14,9 @@
namespace Service::HID {
NpadAbstractPropertiesHandler::NpadAbstractPropertiesHandler() {}
NpadAbstractPropertiesHandler::NpadAbstractPropertiesHandler(Kernel::KernelCore& kernel_)
: kernel{kernel_}
{}
NpadAbstractPropertiesHandler::~NpadAbstractPropertiesHandler() = default;
@@ -1,3 +1,6 @@
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
@@ -10,6 +13,10 @@
#include "hid_core/hid_types.h"
#include "hid_core/resources/npad/npad_types.h"
namespace Kernel {
class KernelCore;
}
namespace Service::HID {
struct NpadSharedMemoryEntry;
@@ -25,7 +32,7 @@ struct ColorProperties {
/// Handles Npad request from HID interfaces
class NpadAbstractPropertiesHandler final {
public:
explicit NpadAbstractPropertiesHandler();
explicit NpadAbstractPropertiesHandler(Kernel::KernelCore& kernel_);
~NpadAbstractPropertiesHandler();
void SetAbstractPadHolder(NpadAbstractedPadHolder* holder);
@@ -82,5 +89,6 @@ private:
ColorProperties fullkey_color{};
ColorProperties left_color{};
ColorProperties right_color{};
Kernel::KernelCore& kernel;
};
} // namespace Service::HID
@@ -1,4 +1,4 @@
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
@@ -15,7 +15,9 @@
namespace Service::HID {
NpadAbstractSixAxisHandler::NpadAbstractSixAxisHandler() {}
NpadAbstractSixAxisHandler::NpadAbstractSixAxisHandler(Kernel::KernelCore& kernel_)
: kernel{kernel_}
{}
NpadAbstractSixAxisHandler::~NpadAbstractSixAxisHandler() = default;
@@ -1,3 +1,6 @@
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
@@ -6,6 +9,11 @@
#include "common/common_types.h"
#include "core/hle/result.h"
#include "hid_core/hid_types.h"
#include "hid_core/resources/shared_memory_format.h"
namespace Kernel {
class KernelCore;
}
namespace Service::HID {
class SixAxisResource;
@@ -17,7 +25,7 @@ struct NpadSixAxisSensorLifo;
/// Handles Npad request from HID interfaces
class NpadAbstractSixAxisHandler final {
public:
explicit NpadAbstractSixAxisHandler();
explicit NpadAbstractSixAxisHandler(Kernel::KernelCore& kernel_);
~NpadAbstractSixAxisHandler();
void SetAbstractPadHolder(NpadAbstractedPadHolder* holder);
@@ -56,6 +64,7 @@ private:
SixAxisResource* six_axis_resource{nullptr};
s32 ref_counter{};
Kernel::KernelCore& kernel;
};
} // namespace Service::HID
@@ -1,4 +1,4 @@
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
@@ -19,7 +19,9 @@
namespace Service::HID {
NpadAbstractVibrationHandler::NpadAbstractVibrationHandler() {}
NpadAbstractVibrationHandler::NpadAbstractVibrationHandler(Kernel::KernelCore& kernel_)
: kernel{kernel_}
{}
NpadAbstractVibrationHandler::~NpadAbstractVibrationHandler() = default;
@@ -1,3 +1,6 @@
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
@@ -9,6 +12,10 @@
#include "core/hle/result.h"
#include "hid_core/hid_types.h"
namespace Kernel {
class KernelCore;
}
namespace Core::HID {
class HIDCore;
}
@@ -25,7 +32,7 @@ class NpadVibration;
/// Keeps track of battery levels and updates npad battery shared memory values
class NpadAbstractVibrationHandler final {
public:
explicit NpadAbstractVibrationHandler();
explicit NpadAbstractVibrationHandler(Kernel::KernelCore& kernel_);
~NpadAbstractVibrationHandler();
void SetAbstractPadHolder(NpadAbstractedPadHolder* holder);
@@ -55,5 +62,6 @@ private:
NpadGcVibrationDevice* gc_vibration_device{nullptr};
NpadVibration* vibration_handler{nullptr};
s32 ref_counter{};
Kernel::KernelCore& kernel;
};
} // namespace Service::HID