forked from eden-emu/eden
		
	Rebase
This commit is contained in:
		
							parent
							
								
									fcdbf0bc53
								
							
						
					
					
						commit
						bd1c4ec9a0
					
				
					 25 changed files with 74 additions and 61 deletions
				
			
		|  | @ -14,7 +14,7 @@ namespace Service::AOC { | |||
| 
 | ||||
| class AOC_U final : public ServiceFramework<AOC_U> { | ||||
| public: | ||||
|     AOC_U(Core::System& system); | ||||
|     explicit AOC_U(Core::System& system); | ||||
|     ~AOC_U() override; | ||||
| 
 | ||||
| private: | ||||
|  |  | |||
|  | @ -6,15 +6,15 @@ | |||
| 
 | ||||
| namespace Service::HID { | ||||
| 
 | ||||
| ControllerBase::ControllerBase() = default; | ||||
| ControllerBase::ControllerBase(Core::System& system) : system(system){}; | ||||
| ControllerBase::~ControllerBase() = default; | ||||
| 
 | ||||
| void ControllerBase::ActivateController(Core::System& system) { | ||||
| void ControllerBase::ActivateController() { | ||||
|     if (is_activated) { | ||||
|         OnRelease(); | ||||
|     } | ||||
|     is_activated = true; | ||||
|     OnInit(system); | ||||
|     OnInit(); | ||||
| } | ||||
| 
 | ||||
| void ControllerBase::DeactivateController() { | ||||
|  |  | |||
|  | @ -18,11 +18,11 @@ class System; | |||
| namespace Service::HID { | ||||
| class ControllerBase { | ||||
| public: | ||||
|     ControllerBase(); | ||||
|     ControllerBase(Core::System& system); | ||||
|     virtual ~ControllerBase(); | ||||
| 
 | ||||
|     // Called when the controller is initialized
 | ||||
|     virtual void OnInit(Core::System& system) = 0; | ||||
|     virtual void OnInit() = 0; | ||||
| 
 | ||||
|     // When the controller is released
 | ||||
|     virtual void OnRelease() = 0; | ||||
|  | @ -34,7 +34,7 @@ public: | |||
|     // Called when input devices should be loaded
 | ||||
|     virtual void OnLoadInputDevices() = 0; | ||||
| 
 | ||||
|     void ActivateController(Core::System& system); | ||||
|     void ActivateController(); | ||||
| 
 | ||||
|     void DeactivateController(); | ||||
| 
 | ||||
|  | @ -50,5 +50,7 @@ protected: | |||
|         s64_le entry_count; | ||||
|     }; | ||||
|     static_assert(sizeof(CommonHeader) == 0x20, "CommonHeader is an invalid size"); | ||||
| 
 | ||||
|     Core::System& system; | ||||
| }; | ||||
| } // namespace Service::HID
 | ||||
|  |  | |||
|  | @ -14,10 +14,11 @@ constexpr s32 HID_JOYSTICK_MAX = 0x7fff; | |||
| constexpr s32 HID_JOYSTICK_MIN = -0x7fff; | ||||
| enum class JoystickId : std::size_t { Joystick_Left, Joystick_Right }; | ||||
| 
 | ||||
| Controller_DebugPad::Controller_DebugPad() = default; | ||||
| Controller_DebugPad::Controller_DebugPad(Core::System& system) | ||||
|     : ControllerBase(system), system(system) {} | ||||
| Controller_DebugPad::~Controller_DebugPad() = default; | ||||
| 
 | ||||
| void Controller_DebugPad::OnInit(Core::System& system) {} | ||||
| void Controller_DebugPad::OnInit() {} | ||||
| 
 | ||||
| void Controller_DebugPad::OnRelease() {} | ||||
| 
 | ||||
|  |  | |||
|  | @ -16,11 +16,11 @@ | |||
| namespace Service::HID { | ||||
| class Controller_DebugPad final : public ControllerBase { | ||||
| public: | ||||
|     Controller_DebugPad(); | ||||
|     explicit Controller_DebugPad(Core::System& system); | ||||
|     ~Controller_DebugPad() override; | ||||
| 
 | ||||
|     // Called when the controller is initialized
 | ||||
|     void OnInit(Core::System& system) override; | ||||
|     void OnInit() override; | ||||
| 
 | ||||
|     // When the controller is released
 | ||||
|     void OnRelease() override; | ||||
|  | @ -89,5 +89,6 @@ private: | |||
|         buttons; | ||||
|     std::array<std::unique_ptr<Input::AnalogDevice>, Settings::NativeAnalog::NUM_STICKS_HID> | ||||
|         analogs; | ||||
|     Core::System& system; | ||||
| }; | ||||
| } // namespace Service::HID
 | ||||
|  |  | |||
|  | @ -10,10 +10,11 @@ | |||
| namespace Service::HID { | ||||
| constexpr std::size_t SHARED_MEMORY_OFFSET = 0x3BA00; | ||||
| 
 | ||||
| Controller_Gesture::Controller_Gesture() = default; | ||||
| Controller_Gesture::Controller_Gesture(Core::System& system) | ||||
|     : ControllerBase(system), system(system) {} | ||||
| Controller_Gesture::~Controller_Gesture() = default; | ||||
| 
 | ||||
| void Controller_Gesture::OnInit(Core::System& system) {} | ||||
| void Controller_Gesture::OnInit() {} | ||||
| 
 | ||||
| void Controller_Gesture::OnRelease() {} | ||||
| 
 | ||||
|  |  | |||
|  | @ -12,11 +12,11 @@ | |||
| namespace Service::HID { | ||||
| class Controller_Gesture final : public ControllerBase { | ||||
| public: | ||||
|     Controller_Gesture(); | ||||
|     Controller_Gesture(Core::System& system); | ||||
|     ~Controller_Gesture() override; | ||||
| 
 | ||||
|     // Called when the controller is initialized
 | ||||
|     void OnInit(Core::System& system) override; | ||||
|     void OnInit() override; | ||||
| 
 | ||||
|     // When the controller is released
 | ||||
|     void OnRelease() override; | ||||
|  | @ -59,5 +59,6 @@ private: | |||
|         std::array<GestureState, 17> gesture_states; | ||||
|     }; | ||||
|     SharedMemory shared_memory{}; | ||||
|     Core::System& system; | ||||
| }; | ||||
| } // namespace Service::HID
 | ||||
|  |  | |||
|  | @ -12,10 +12,11 @@ namespace Service::HID { | |||
| constexpr std::size_t SHARED_MEMORY_OFFSET = 0x3800; | ||||
| constexpr u8 KEYS_PER_BYTE = 8; | ||||
| 
 | ||||
| Controller_Keyboard::Controller_Keyboard() = default; | ||||
| Controller_Keyboard::Controller_Keyboard(Core::System& system) | ||||
|     : ControllerBase(system), system(system) {} | ||||
| Controller_Keyboard::~Controller_Keyboard() = default; | ||||
| 
 | ||||
| void Controller_Keyboard::OnInit(Core::System& system) {} | ||||
| void Controller_Keyboard::OnInit() {} | ||||
| 
 | ||||
| void Controller_Keyboard::OnRelease() {} | ||||
| 
 | ||||
|  |  | |||
|  | @ -15,11 +15,11 @@ | |||
| namespace Service::HID { | ||||
| class Controller_Keyboard final : public ControllerBase { | ||||
| public: | ||||
|     Controller_Keyboard(); | ||||
|     Controller_Keyboard(Core::System& system); | ||||
|     ~Controller_Keyboard() override; | ||||
| 
 | ||||
|     // Called when the controller is initialized
 | ||||
|     void OnInit(Core::System& system) override; | ||||
|     void OnInit() override; | ||||
| 
 | ||||
|     // When the controller is released
 | ||||
|     void OnRelease() override; | ||||
|  | @ -53,5 +53,6 @@ private: | |||
|         keyboard_keys; | ||||
|     std::array<std::unique_ptr<Input::ButtonDevice>, Settings::NativeKeyboard::NumKeyboardMods> | ||||
|         keyboard_mods; | ||||
|     Core::System& system; | ||||
| }; | ||||
| } // namespace Service::HID
 | ||||
|  |  | |||
|  | @ -11,10 +11,10 @@ | |||
| namespace Service::HID { | ||||
| constexpr std::size_t SHARED_MEMORY_OFFSET = 0x3400; | ||||
| 
 | ||||
| Controller_Mouse::Controller_Mouse() = default; | ||||
| Controller_Mouse::Controller_Mouse(Core::System& system) : ControllerBase(system), system(system) {} | ||||
| Controller_Mouse::~Controller_Mouse() = default; | ||||
| 
 | ||||
| void Controller_Mouse::OnInit(Core::System& system) {} | ||||
| void Controller_Mouse::OnInit() {} | ||||
| void Controller_Mouse::OnRelease() {} | ||||
| 
 | ||||
| void Controller_Mouse::OnUpdate(const Core::Timing::CoreTiming& core_timing, u8* data, | ||||
|  |  | |||
|  | @ -14,11 +14,11 @@ | |||
| namespace Service::HID { | ||||
| class Controller_Mouse final : public ControllerBase { | ||||
| public: | ||||
|     Controller_Mouse(); | ||||
|     Controller_Mouse(Core::System& system); | ||||
|     ~Controller_Mouse() override; | ||||
| 
 | ||||
|     // Called when the controller is initialized
 | ||||
|     void OnInit(Core::System& system) override; | ||||
|     void OnInit() override; | ||||
| 
 | ||||
|     // When the controller is released
 | ||||
|     void OnRelease() override; | ||||
|  | @ -53,5 +53,6 @@ private: | |||
|     std::unique_ptr<Input::MouseDevice> mouse_device; | ||||
|     std::array<std::unique_ptr<Input::ButtonDevice>, Settings::NativeMouseButton::NumMouseButtons> | ||||
|         mouse_button_devices; | ||||
|     Core::System& system; | ||||
| }; | ||||
| } // namespace Service::HID
 | ||||
|  |  | |||
|  | @ -93,7 +93,7 @@ u32 Controller_NPad::IndexToNPad(std::size_t index) { | |||
|     }; | ||||
| } | ||||
| 
 | ||||
| Controller_NPad::Controller_NPad() = default; | ||||
| Controller_NPad::Controller_NPad(Core::System& system) : ControllerBase(system), system(system) {} | ||||
| Controller_NPad::~Controller_NPad() = default; | ||||
| 
 | ||||
| void Controller_NPad::InitNewlyAddedControler(std::size_t controller_idx) { | ||||
|  | @ -167,7 +167,7 @@ void Controller_NPad::InitNewlyAddedControler(std::size_t controller_idx) { | |||
|     controller.battery_level[2] = BATTERY_FULL; | ||||
| } | ||||
| 
 | ||||
| void Controller_NPad::OnInit(Core::System& system) { | ||||
| void Controller_NPad::OnInit() { | ||||
|     auto& kernel = system.Kernel(); | ||||
|     styleset_changed_event = Kernel::WritableEvent::CreateEventPair( | ||||
|         kernel, Kernel::ResetType::Automatic, "npad:NpadStyleSetChanged"); | ||||
|  |  | |||
|  | @ -20,11 +20,11 @@ constexpr u32 NPAD_UNKNOWN = 16; // TODO(ogniK): What is this? | |||
| 
 | ||||
| class Controller_NPad final : public ControllerBase { | ||||
| public: | ||||
|     Controller_NPad(); | ||||
|     Controller_NPad(Core::System& system); | ||||
|     ~Controller_NPad() override; | ||||
| 
 | ||||
|     // Called when the controller is initialized
 | ||||
|     void OnInit(Core::System& system) override; | ||||
|     void OnInit() override; | ||||
| 
 | ||||
|     // When the controller is released
 | ||||
|     void OnRelease() override; | ||||
|  | @ -327,5 +327,6 @@ private: | |||
|     std::array<ControllerPad, 10> npad_pad_states{}; | ||||
|     bool IsControllerSupported(NPadControllerType controller); | ||||
|     bool is_in_lr_assignment_mode{false}; | ||||
|     Core::System& system; | ||||
| }; | ||||
| } // namespace Service::HID
 | ||||
|  |  | |||
|  | @ -9,10 +9,11 @@ | |||
| 
 | ||||
| namespace Service::HID { | ||||
| 
 | ||||
| Controller_Stubbed::Controller_Stubbed() = default; | ||||
| Controller_Stubbed::Controller_Stubbed(Core::System& system) | ||||
|     : ControllerBase(system), system(system) {} | ||||
| Controller_Stubbed::~Controller_Stubbed() = default; | ||||
| 
 | ||||
| void Controller_Stubbed::OnInit(Core::System& system) {} | ||||
| void Controller_Stubbed::OnInit() {} | ||||
| 
 | ||||
| void Controller_Stubbed::OnRelease() {} | ||||
| 
 | ||||
|  |  | |||
|  | @ -10,11 +10,11 @@ | |||
| namespace Service::HID { | ||||
| class Controller_Stubbed final : public ControllerBase { | ||||
| public: | ||||
|     Controller_Stubbed(); | ||||
|     Controller_Stubbed(Core::System& system); | ||||
|     ~Controller_Stubbed() override; | ||||
| 
 | ||||
|     // Called when the controller is initialized
 | ||||
|     void OnInit(Core::System& system) override; | ||||
|     void OnInit() override; | ||||
| 
 | ||||
|     // When the controller is released
 | ||||
|     void OnRelease() override; | ||||
|  | @ -30,5 +30,6 @@ public: | |||
| private: | ||||
|     bool smart_update{}; | ||||
|     std::size_t common_offset{}; | ||||
|     Core::System& system; | ||||
| }; | ||||
| } // namespace Service::HID
 | ||||
|  |  | |||
|  | @ -13,10 +13,11 @@ | |||
| namespace Service::HID { | ||||
| constexpr std::size_t SHARED_MEMORY_OFFSET = 0x400; | ||||
| 
 | ||||
| Controller_Touchscreen::Controller_Touchscreen() = default; | ||||
| Controller_Touchscreen::Controller_Touchscreen(Core::System& system) | ||||
|     : ControllerBase(system), system(system) {} | ||||
| Controller_Touchscreen::~Controller_Touchscreen() = default; | ||||
| 
 | ||||
| void Controller_Touchscreen::OnInit(Core::System& system) {} | ||||
| void Controller_Touchscreen::OnInit() {} | ||||
| 
 | ||||
| void Controller_Touchscreen::OnRelease() {} | ||||
| 
 | ||||
|  |  | |||
|  | @ -14,11 +14,11 @@ | |||
| namespace Service::HID { | ||||
| class Controller_Touchscreen final : public ControllerBase { | ||||
| public: | ||||
|     Controller_Touchscreen(); | ||||
|     Controller_Touchscreen(Core::System& system); | ||||
|     ~Controller_Touchscreen() override; | ||||
| 
 | ||||
|     // Called when the controller is initialized
 | ||||
|     void OnInit(Core::System& system) override; | ||||
|     void OnInit() override; | ||||
| 
 | ||||
|     // When the controller is released
 | ||||
|     void OnRelease() override; | ||||
|  | @ -69,5 +69,6 @@ private: | |||
|     TouchScreenSharedMemory shared_memory{}; | ||||
|     std::unique_ptr<Input::TouchDevice> touch_device; | ||||
|     s64_le last_touch{}; | ||||
|     Core::System& system; | ||||
| }; | ||||
| } // namespace Service::HID
 | ||||
|  |  | |||
|  | @ -10,10 +10,10 @@ | |||
| namespace Service::HID { | ||||
| constexpr std::size_t SHARED_MEMORY_OFFSET = 0x3C00; | ||||
| 
 | ||||
| Controller_XPad::Controller_XPad() = default; | ||||
| Controller_XPad::Controller_XPad(Core::System& system) : ControllerBase(system), system(system) {} | ||||
| Controller_XPad::~Controller_XPad() = default; | ||||
| 
 | ||||
| void Controller_XPad::OnInit(Core::System& system) {} | ||||
| void Controller_XPad::OnInit() {} | ||||
| 
 | ||||
| void Controller_XPad::OnRelease() {} | ||||
| 
 | ||||
|  |  | |||
|  | @ -12,11 +12,11 @@ | |||
| namespace Service::HID { | ||||
| class Controller_XPad final : public ControllerBase { | ||||
| public: | ||||
|     Controller_XPad(); | ||||
|     Controller_XPad(Core::System& system); | ||||
|     ~Controller_XPad() override; | ||||
| 
 | ||||
|     // Called when the controller is initialized
 | ||||
|     void OnInit(Core::System& system) override; | ||||
|     void OnInit() override; | ||||
| 
 | ||||
|     // When the controller is released
 | ||||
|     void OnRelease() override; | ||||
|  | @ -56,5 +56,6 @@ private: | |||
|     }; | ||||
|     static_assert(sizeof(SharedMemory) == 0x1000, "SharedMemory is an invalid size"); | ||||
|     SharedMemory shared_memory{}; | ||||
|     Core::System& system; | ||||
| }; | ||||
| } // namespace Service::HID
 | ||||
|  |  | |||
|  | @ -67,8 +67,8 @@ IAppletResource::IAppletResource(Core::System& system) | |||
|     MakeController<Controller_Gesture>(HidController::Gesture); | ||||
| 
 | ||||
|     // Homebrew doesn't try to activate some controllers, so we activate them by default
 | ||||
|     GetController<Controller_NPad>(HidController::NPad).ActivateController(system); | ||||
|     GetController<Controller_Touchscreen>(HidController::Touchscreen).ActivateController(system); | ||||
|     GetController<Controller_NPad>(HidController::NPad).ActivateController(); | ||||
|     GetController<Controller_Touchscreen>(HidController::Touchscreen).ActivateController(); | ||||
| 
 | ||||
|     GetController<Controller_Stubbed>(HidController::Unknown1).SetCommonHeaderOffset(0x4c00); | ||||
|     GetController<Controller_Stubbed>(HidController::Unknown2).SetCommonHeaderOffset(0x4e00); | ||||
|  | @ -89,7 +89,7 @@ IAppletResource::IAppletResource(Core::System& system) | |||
| } | ||||
| 
 | ||||
| void IAppletResource::ActivateController(HidController controller) { | ||||
|     controllers[static_cast<size_t>(controller)]->ActivateController(system); | ||||
|     controllers[static_cast<size_t>(controller)]->ActivateController(); | ||||
| } | ||||
| 
 | ||||
| void IAppletResource::DeactivateController(HidController controller) { | ||||
|  |  | |||
|  | @ -42,7 +42,7 @@ enum class HidController : std::size_t { | |||
| 
 | ||||
| class IAppletResource final : public ServiceFramework<IAppletResource> { | ||||
| public: | ||||
|     IAppletResource(Core::System& system); | ||||
|     explicit IAppletResource(Core::System& system); | ||||
|     ~IAppletResource() override; | ||||
| 
 | ||||
|     void ActivateController(HidController controller); | ||||
|  | @ -61,7 +61,7 @@ public: | |||
| private: | ||||
|     template <typename T> | ||||
|     void MakeController(HidController controller) { | ||||
|         controllers[static_cast<std::size_t>(controller)] = std::make_unique<T>(); | ||||
|         controllers[static_cast<std::size_t>(controller)] = std::make_unique<T>(system); | ||||
|     } | ||||
| 
 | ||||
|     void GetSharedMemoryHandle(Kernel::HLERequestContext& ctx); | ||||
|  | @ -78,7 +78,7 @@ private: | |||
| 
 | ||||
| class Hid final : public ServiceFramework<Hid> { | ||||
| public: | ||||
|     Hid(Core::System& system); | ||||
|     explicit Hid(Core::System& system); | ||||
|     ~Hid() override; | ||||
| 
 | ||||
|     std::shared_ptr<IAppletResource> GetAppletResource(); | ||||
|  |  | |||
|  | @ -126,7 +126,7 @@ public: | |||
| class IEnsureNetworkClockAvailabilityService final | ||||
|     : public ServiceFramework<IEnsureNetworkClockAvailabilityService> { | ||||
| public: | ||||
|     IEnsureNetworkClockAvailabilityService(Core::System& system) | ||||
|     explicit IEnsureNetworkClockAvailabilityService(Core::System& system) | ||||
|         : ServiceFramework("IEnsureNetworkClockAvailabilityService") { | ||||
|         static const FunctionInfo functions[] = { | ||||
|             {0, &IEnsureNetworkClockAvailabilityService::StartTask, "StartTask"}, | ||||
|  |  | |||
|  | @ -20,7 +20,7 @@ void EncryptSharedFont(const std::vector<u8>& input, Kernel::PhysicalMemory& out | |||
| 
 | ||||
| class PL_U final : public ServiceFramework<PL_U> { | ||||
| public: | ||||
|     PL_U(Core::System& system); | ||||
|     explicit PL_U(Core::System& system); | ||||
|     ~PL_U() override; | ||||
| 
 | ||||
| private: | ||||
|  |  | |||
|  | @ -29,8 +29,7 @@ namespace Service::NVFlinger { | |||
| constexpr s64 frame_ticks = static_cast<s64>(Core::Timing::BASE_CLOCK_RATE / 60); | ||||
| constexpr s64 frame_ticks_30fps = static_cast<s64>(Core::Timing::BASE_CLOCK_RATE / 30); | ||||
| 
 | ||||
| NVFlinger::NVFlinger(Core::Timing::CoreTiming& core_timing, Core::System& system) | ||||
|     : core_timing{core_timing}, system(system) { | ||||
| NVFlinger::NVFlinger(Core::System& system) : system(system) { | ||||
|     displays.emplace_back(0, "Default", system); | ||||
|     displays.emplace_back(1, "External", system); | ||||
|     displays.emplace_back(2, "Edid", system); | ||||
|  | @ -38,18 +37,20 @@ NVFlinger::NVFlinger(Core::Timing::CoreTiming& core_timing, Core::System& system | |||
|     displays.emplace_back(4, "Null", system); | ||||
| 
 | ||||
|     // Schedule the screen composition events
 | ||||
|     composition_event = core_timing.RegisterEvent("ScreenComposition", [this](u64 userdata, | ||||
|                                                                               s64 cycles_late) { | ||||
|     composition_event = system.CoreTiming().RegisterEvent( | ||||
|         "ScreenComposition", [this](u64 userdata, s64 cycles_late) { | ||||
|             Compose(); | ||||
|         const auto ticks = Settings::values.force_30fps_mode ? frame_ticks_30fps : GetNextTicks(); | ||||
|         this->core_timing.ScheduleEvent(std::max<s64>(0LL, ticks - cycles_late), composition_event); | ||||
|             const auto ticks = | ||||
|                 Settings::values.force_30fps_mode ? frame_ticks_30fps : GetNextTicks(); | ||||
|             this->system.CoreTiming().ScheduleEvent(std::max<s64>(0LL, ticks - cycles_late), | ||||
|                                                     composition_event); | ||||
|         }); | ||||
| 
 | ||||
|     core_timing.ScheduleEvent(frame_ticks, composition_event); | ||||
|     system.CoreTiming().ScheduleEvent(frame_ticks, composition_event); | ||||
| } | ||||
| 
 | ||||
| NVFlinger::~NVFlinger() { | ||||
|     core_timing.UnscheduleEvent(composition_event, 0); | ||||
|     system.CoreTiming().UnscheduleEvent(composition_event, 0); | ||||
| } | ||||
| 
 | ||||
| void NVFlinger::SetNVDrvInstance(std::shared_ptr<Nvidia::Module> instance) { | ||||
|  |  | |||
|  | @ -38,7 +38,7 @@ class BufferQueue; | |||
| 
 | ||||
| class NVFlinger final { | ||||
| public: | ||||
|     explicit NVFlinger(Core::Timing::CoreTiming& core_timing, Core::System& system); | ||||
|     explicit NVFlinger(Core::System& system); | ||||
|     ~NVFlinger(); | ||||
| 
 | ||||
|     /// Sets the NVDrv module instance to use to send buffers to the GPU.
 | ||||
|  | @ -105,9 +105,6 @@ private: | |||
|     /// Event that handles screen composition.
 | ||||
|     Core::Timing::EventType* composition_event; | ||||
| 
 | ||||
|     /// Core timing instance for registering/unregistering the composition event.
 | ||||
|     Core::Timing::CoreTiming& core_timing; | ||||
| 
 | ||||
|     Core::System& system; | ||||
| }; | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 David Marcec
						David Marcec