mirror of
https://git.zaroz.cloud/nintendo-back-up/yuzu/yuzu-mainline.git
synced 2025-12-20 11:12:40 +00:00
service: set: Implement more settings functions for Qlaunch
This commit is contained in:
@@ -1080,12 +1080,15 @@ void NPad::UnregisterAppletResourceUserId(u64 aruid) {
|
||||
|
||||
void NPad::SetNpadExternals(std::shared_ptr<AppletResource> resource,
|
||||
std::recursive_mutex* shared_mutex,
|
||||
std::shared_ptr<HandheldConfig> handheld_config) {
|
||||
std::shared_ptr<HandheldConfig> handheld_config,
|
||||
std::shared_ptr<Service::Set::ISystemSettingsServer> settings) {
|
||||
applet_resource_holder.applet_resource = resource;
|
||||
applet_resource_holder.shared_mutex = shared_mutex;
|
||||
applet_resource_holder.shared_npad_resource = &npad_resource;
|
||||
applet_resource_holder.handheld_config = handheld_config;
|
||||
|
||||
vibration_handler.SetSettingsService(settings);
|
||||
|
||||
for (auto& abstract_pad : abstracted_pads) {
|
||||
abstract_pad.SetExternals(&applet_resource_holder, nullptr, nullptr, nullptr, nullptr,
|
||||
&vibration_handler, &hid_core);
|
||||
|
||||
@@ -34,6 +34,10 @@ namespace Service::KernelHelpers {
|
||||
class ServiceContext;
|
||||
} // namespace Service::KernelHelpers
|
||||
|
||||
namespace Service::Set {
|
||||
class ISystemSettingsServer;
|
||||
}
|
||||
|
||||
union Result;
|
||||
|
||||
namespace Service::HID {
|
||||
@@ -128,7 +132,8 @@ public:
|
||||
void UnregisterAppletResourceUserId(u64 aruid);
|
||||
void SetNpadExternals(std::shared_ptr<AppletResource> resource,
|
||||
std::recursive_mutex* shared_mutex,
|
||||
std::shared_ptr<HandheldConfig> handheld_config);
|
||||
std::shared_ptr<HandheldConfig> handheld_config,
|
||||
std::shared_ptr<Service::Set::ISystemSettingsServer> settings);
|
||||
|
||||
AppletDetailedUiType GetAppletDetailedUiType(Core::HID::NpadIdType npad_id);
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
#include "core/hle/service/set/system_settings_server.h"
|
||||
#include "hid_core/hid_result.h"
|
||||
#include "hid_core/resources/npad/npad_vibration.h"
|
||||
|
||||
@@ -13,10 +14,11 @@ NpadVibration::~NpadVibration() = default;
|
||||
Result NpadVibration::Activate() {
|
||||
std::scoped_lock lock{mutex};
|
||||
|
||||
const f32 master_volume = 1.0f; // nn::settings::system::GetVibrationMasterVolume();
|
||||
// if (master_volume < 0.0f || master_volume > 1.0f) {
|
||||
// return ResultVibrationStrengthOutOfRange;
|
||||
// }
|
||||
f32 master_volume = 1.0f;
|
||||
m_set_sys->GetVibrationMasterVolume(master_volume);
|
||||
if (master_volume < 0.0f || master_volume > 1.0f) {
|
||||
return ResultVibrationStrengthOutOfRange;
|
||||
}
|
||||
|
||||
volume = master_volume;
|
||||
return ResultSuccess;
|
||||
@@ -26,6 +28,12 @@ Result NpadVibration::Deactivate() {
|
||||
return ResultSuccess;
|
||||
}
|
||||
|
||||
Result NpadVibration::SetSettingsService(
|
||||
std::shared_ptr<Service::Set::ISystemSettingsServer> settings) {
|
||||
m_set_sys = settings;
|
||||
return ResultSuccess;
|
||||
}
|
||||
|
||||
Result NpadVibration::SetVibrationMasterVolume(f32 master_volume) {
|
||||
std::scoped_lock lock{mutex};
|
||||
|
||||
@@ -34,7 +42,7 @@ Result NpadVibration::SetVibrationMasterVolume(f32 master_volume) {
|
||||
}
|
||||
|
||||
volume = master_volume;
|
||||
// nn::settings::system::SetVibrationMasterVolume(master_volume);
|
||||
m_set_sys->SetVibrationMasterVolume(master_volume);
|
||||
|
||||
return ResultSuccess;
|
||||
}
|
||||
@@ -48,10 +56,11 @@ Result NpadVibration::GetVibrationVolume(f32& out_volume) const {
|
||||
Result NpadVibration::GetVibrationMasterVolume(f32& out_volume) const {
|
||||
std::scoped_lock lock{mutex};
|
||||
|
||||
const f32 master_volume = 1.0f; // nn::settings::system::GetVibrationMasterVolume();
|
||||
// if (master_volume < 0.0f || master_volume > 1.0f) {
|
||||
// return ResultVibrationStrengthOutOfRange;
|
||||
// }
|
||||
f32 master_volume = 1.0f;
|
||||
m_set_sys->GetVibrationMasterVolume(master_volume);
|
||||
if (master_volume < 0.0f || master_volume > 1.0f) {
|
||||
return ResultVibrationStrengthOutOfRange;
|
||||
}
|
||||
|
||||
out_volume = master_volume;
|
||||
return ResultSuccess;
|
||||
@@ -67,10 +76,11 @@ Result NpadVibration::BeginPermitVibrationSession(u64 aruid) {
|
||||
Result NpadVibration::EndPermitVibrationSession() {
|
||||
std::scoped_lock lock{mutex};
|
||||
|
||||
const f32 master_volume = 1.0f; // nn::settings::system::GetVibrationMasterVolume();
|
||||
// if (master_volume < 0.0f || master_volume > 1.0f) {
|
||||
// return ResultVibrationStrengthOutOfRange;
|
||||
// }
|
||||
f32 master_volume = 1.0f;
|
||||
m_set_sys->GetVibrationMasterVolume(master_volume);
|
||||
if (master_volume < 0.0f || master_volume > 1.0f) {
|
||||
return ResultVibrationStrengthOutOfRange;
|
||||
}
|
||||
|
||||
volume = master_volume;
|
||||
session_aruid = 0;
|
||||
|
||||
@@ -8,6 +8,10 @@
|
||||
#include "common/common_types.h"
|
||||
#include "core/hle/result.h"
|
||||
|
||||
namespace Service::Set {
|
||||
class ISystemSettingsServer;
|
||||
}
|
||||
|
||||
namespace Service::HID {
|
||||
|
||||
class NpadVibration final {
|
||||
@@ -18,6 +22,7 @@ public:
|
||||
Result Activate();
|
||||
Result Deactivate();
|
||||
|
||||
Result SetSettingsService(std::shared_ptr<Service::Set::ISystemSettingsServer> settings);
|
||||
Result SetVibrationMasterVolume(f32 master_volume);
|
||||
Result GetVibrationVolume(f32& out_volume) const;
|
||||
Result GetVibrationMasterVolume(f32& out_volume) const;
|
||||
@@ -31,6 +36,8 @@ private:
|
||||
f32 volume{};
|
||||
u64 session_aruid{};
|
||||
mutable std::mutex mutex;
|
||||
|
||||
std::shared_ptr<Service::Set::ISystemSettingsServer> m_set_sys;
|
||||
};
|
||||
|
||||
} // namespace Service::HID
|
||||
|
||||
Reference in New Issue
Block a user