summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/core/hle/service/hid/hid_system_server.cpp4
-rw-r--r--src/core/hle/service/set/system_settings_server.cpp5
-rw-r--r--src/hid_core/frontend/emulated_controller.cpp9
-rw-r--r--src/hid_core/resources/npad/npad.cpp13
-rw-r--r--src/hid_core/resources/npad/npad.h2
5 files changed, 29 insertions, 4 deletions
diff --git a/src/core/hle/service/hid/hid_system_server.cpp b/src/core/hle/service/hid/hid_system_server.cpp
index 4466a189b..bf27ddfbf 100644
--- a/src/core/hle/service/hid/hid_system_server.cpp
+++ b/src/core/hle/service/hid/hid_system_server.cpp
@@ -533,7 +533,7 @@ void IHidSystemServer::EnableAppletToGetInput(HLERequestContext& ctx) {
parameters.is_enabled, parameters.applet_resource_user_id);
GetResourceManager()->EnableInput(parameters.applet_resource_user_id, parameters.is_enabled);
- // GetResourceManager()->GetNpad()->EnableInput(parameters.applet_resource_user_id);
+ GetResourceManager()->GetNpad()->EnableAppletToGetInput(parameters.applet_resource_user_id);
IPC::ResponseBuilder rb{ctx, 2};
rb.Push(ResultSuccess);
@@ -596,7 +596,7 @@ void IHidSystemServer::EnableAppletToGetPadInput(HLERequestContext& ctx) {
parameters.is_enabled, parameters.applet_resource_user_id);
GetResourceManager()->EnablePadInput(parameters.applet_resource_user_id, parameters.is_enabled);
- // GetResourceManager()->GetNpad()->EnableInput(parameters.applet_resource_user_id);
+ GetResourceManager()->GetNpad()->EnableAppletToGetInput(parameters.applet_resource_user_id);
IPC::ResponseBuilder rb{ctx, 2};
rb.Push(ResultSuccess);
diff --git a/src/core/hle/service/set/system_settings_server.cpp b/src/core/hle/service/set/system_settings_server.cpp
index 87242ae68..2e5785fed 100644
--- a/src/core/hle/service/set/system_settings_server.cpp
+++ b/src/core/hle/service/set/system_settings_server.cpp
@@ -1038,6 +1038,11 @@ void ISystemSettingsServer::SetBluetoothEnableFlag(HLERequestContext& ctx) {
}
void ISystemSettingsServer::GetMiiAuthorId(HLERequestContext& ctx) {
+ if (m_system_settings.mii_author_id.IsInvalid()) {
+ m_system_settings.mii_author_id = Common::UUID::MakeDefault();
+ SetSaveNeeded();
+ }
+
LOG_INFO(Service_SET, "called, author_id={}",
m_system_settings.mii_author_id.FormattedString());
diff --git a/src/hid_core/frontend/emulated_controller.cpp b/src/hid_core/frontend/emulated_controller.cpp
index f2499502d..e12e5a77e 100644
--- a/src/hid_core/frontend/emulated_controller.cpp
+++ b/src/hid_core/frontend/emulated_controller.cpp
@@ -1240,12 +1240,17 @@ bool EmulatedController::SetVibration(DeviceIndex device_index, const VibrationV
if (!output_devices[index]) {
return false;
}
+
+ last_vibration_value = vibration;
+
+ if (!Settings::values.vibration_enabled) {
+ return false;
+ }
+
const auto player_index = Service::HID::NpadIdTypeToIndex(npad_id_type);
const auto& player = Settings::values.players.GetValue()[player_index];
const f32 strength = static_cast<f32>(player.vibration_strength) / 100.0f;
- last_vibration_value = vibration;
-
if (!player.vibration_enabled) {
return false;
}
diff --git a/src/hid_core/resources/npad/npad.cpp b/src/hid_core/resources/npad/npad.cpp
index 212f01429..d13a489c9 100644
--- a/src/hid_core/resources/npad/npad.cpp
+++ b/src/hid_core/resources/npad/npad.cpp
@@ -480,6 +480,10 @@ void NPad::OnUpdate(const Core::Timing::CoreTiming& core_timing) {
continue;
}
+ if (!data->flag.enable_pad_input) {
+ continue;
+ }
+
RequestPadStateUpdate(aruid, controller.device->GetNpadIdType());
auto& pad_state = controller.npad_pad_state;
auto& libnx_state = controller.npad_libnx_state;
@@ -1316,4 +1320,13 @@ void NPad::UpdateHandheldAbstractState() {
abstracted_pads[NpadIdTypeToIndex(Core::HID::NpadIdType::Handheld)].Update();
}
+void NPad::EnableAppletToGetInput(u64 aruid) {
+ std::scoped_lock lock{mutex};
+ std::scoped_lock shared_lock{*applet_resource_holder.shared_mutex};
+
+ for (auto& abstract_pad : abstracted_pads) {
+ abstract_pad.EnableAppletToGetInput(aruid);
+ }
+}
+
} // namespace Service::HID
diff --git a/src/hid_core/resources/npad/npad.h b/src/hid_core/resources/npad/npad.h
index 18b25c688..88289fa2b 100644
--- a/src/hid_core/resources/npad/npad.h
+++ b/src/hid_core/resources/npad/npad.h
@@ -153,6 +153,8 @@ public:
void UpdateHandheldAbstractState();
+ void EnableAppletToGetInput(u64 aruid);
+
private:
struct NpadControllerData {
NpadInternalState* shared_memory = nullptr;