From b645547930a43e72c9186126f6cf28361cfee6ce Mon Sep 17 00:00:00 2001 From: JosJuice Date: Mon, 11 May 2015 07:22:35 +0200 Subject: [PATCH] Revert "HW: Poll system input from system timers" This reverts commit 854f6b8688063544310edbc0fc27a8c42f517d9b. Conflicts: Source/Core/Core/HW/GCPad.cpp Source/Core/Core/HW/Wiimote.cpp Source/Core/Core/State.cpp --- Source/Core/Core/HW/GCPad.cpp | 8 ++++++++ Source/Core/Core/HW/SystemTimers.cpp | 14 -------------- Source/Core/Core/HW/Wiimote.cpp | 8 ++++++++ 3 files changed, 16 insertions(+), 14 deletions(-) diff --git a/Source/Core/Core/HW/GCPad.cpp b/Source/Core/Core/HW/GCPad.cpp index 68ad6b393d..d0881e2dd6 100644 --- a/Source/Core/Core/HW/GCPad.cpp +++ b/Source/Core/Core/HW/GCPad.cpp @@ -57,6 +57,14 @@ void GetStatus(u8 _numPAD, GCPadStatus* _pPADStatus) memset(_pPADStatus, 0, sizeof(*_pPADStatus)); _pPADStatus->err = PAD_ERR_NONE; + // if we are on the next input cycle, update output and input + static int _last_numPAD = 4; + if (_numPAD <= _last_numPAD) + { + g_controller_interface.UpdateInput(); + } + _last_numPAD = _numPAD; + // get input ((GCPad*)s_config.controllers[_numPAD])->GetInput(_pPADStatus); } diff --git a/Source/Core/Core/HW/SystemTimers.cpp b/Source/Core/Core/HW/SystemTimers.cpp index e69c3c1e78..82fd0f89fb 100644 --- a/Source/Core/Core/HW/SystemTimers.cpp +++ b/Source/Core/Core/HW/SystemTimers.cpp @@ -61,8 +61,6 @@ IPC_HLE_PERIOD: For the Wiimote this is the call schedule: #include "Core/IPC_HLE/WII_IPC_HLE.h" #include "Core/PowerPC/PowerPC.h" -#include "InputCommon/ControllerInterface/ControllerInterface.h" - #include "VideoCommon/CommandProcessor.h" #include "VideoCommon/VideoBackendBase.h" @@ -81,7 +79,6 @@ static int et_DSP; static int et_IPC_HLE; static int et_PatchEngine; // PatchEngine updates every 1/60th of a second by default static int et_Throttle; -static int et_UpdateInput; // These are badly educated guesses // Feel free to experiment. Set these in Init below. @@ -134,14 +131,6 @@ static void VICallback(u64 userdata, int cyclesLate) CoreTiming::ScheduleEvent(VideoInterface::GetTicksPerLine() - cyclesLate, et_VI); } -static void UpdateInputCallback(u64 userdata, int cyclesLate) -{ - g_controller_interface.UpdateInput(); - - // Poll system input every 1/60th of a second. - CoreTiming::ScheduleEvent(SystemTimers::GetTicksPerSecond() / 60 - cyclesLate, et_UpdateInput); -} - static void SICallback(u64 userdata, int cyclesLate) { SerialInterface::UpdateDevices(); @@ -270,7 +259,6 @@ void Init() et_IPC_HLE = CoreTiming::RegisterEvent("IPC_HLE_UpdateCallback", IPC_HLE_UpdateCallback); et_PatchEngine = CoreTiming::RegisterEvent("PatchEngine", PatchEngineCallback); et_Throttle = CoreTiming::RegisterEvent("Throttle", ThrottleCallback); - et_UpdateInput = CoreTiming::RegisterEvent("UpdateInput", UpdateInputCallback); CoreTiming::ScheduleEvent(VideoInterface::GetTicksPerLine(), et_VI); CoreTiming::ScheduleEvent(0, et_DSP); @@ -284,8 +272,6 @@ void Init() if (SConfig::GetInstance().m_LocalCoreStartupParameter.bWii) CoreTiming::ScheduleEvent(IPC_HLE_PERIOD, et_IPC_HLE); - - CoreTiming::ScheduleEvent(0, et_UpdateInput); } void Shutdown() diff --git a/Source/Core/Core/HW/Wiimote.cpp b/Source/Core/Core/HW/Wiimote.cpp index 62c88b0ec1..fef1fd0e12 100644 --- a/Source/Core/Core/HW/Wiimote.cpp +++ b/Source/Core/Core/HW/Wiimote.cpp @@ -118,6 +118,14 @@ void Update(int _number) { //PanicAlert( "Wiimote_Update" ); + // if we are on the next input cycle, update output and input + static int _last_number = 4; + if (_number <= _last_number) + { + g_controller_interface.UpdateInput(); + } + _last_number = _number; + if (WIIMOTE_SRC_EMU & g_wiimote_sources[_number]) ((WiimoteEmu::Wiimote*)s_config.controllers[_number])->Update(); else