Input: Enable In-Game Pad Config Reset

This commit is contained in:
Megamouse 2018-12-17 19:13:35 +01:00
parent 5a40c1802b
commit bc3ab7a9d9
9 changed files with 142 additions and 32 deletions

View file

@ -35,6 +35,8 @@ error_code cellPadInit(u32 max_connect)
{
sys_io.warning("cellPadInit(max_connect=%d)", max_connect);
std::lock_guard lock(pad::g_pad_mutex);
if (fxm::check<pad_t>())
return CELL_PAD_ERROR_ALREADY_INITIALIZED;
@ -50,6 +52,8 @@ error_code cellPadEnd()
{
sys_io.notice("cellPadEnd()");
std::lock_guard lock(pad::g_pad_mutex);
if (!fxm::remove<pad_t>())
return CELL_PAD_ERROR_UNINITIALIZED;
@ -60,6 +64,8 @@ error_code cellPadClearBuf(u32 port_no)
{
sys_io.trace("cellPadClearBuf(port_no=%d)", port_no);
std::lock_guard lock(pad::g_pad_mutex);
const auto config = fxm::get<pad_t>();
if (!config)
@ -102,6 +108,8 @@ error_code cellPadGetData(u32 port_no, vm::ptr<CellPadData> data)
{
sys_io.trace("cellPadGetData(port_no=%d, data=*0x%x)", port_no, data);
std::lock_guard lock(pad::g_pad_mutex);
const auto config = fxm::get<pad_t>();
if (!config)
@ -353,6 +361,8 @@ error_code cellPadPeriphGetInfo(vm::ptr<CellPadPeriphInfo> info)
{
sys_io.trace("cellPadPeriphGetInfo(info=*0x%x)", info);
std::lock_guard lock(pad::g_pad_mutex);
const auto config = fxm::get<pad_t>();
if (!config)
@ -395,6 +405,8 @@ error_code cellPadPeriphGetData(u32 port_no, vm::ptr<CellPadPeriphData> data)
{
sys_io.trace("cellPadPeriphGetData(port_no=%d, data=*0x%x)", port_no, data);
std::lock_guard lock(pad::g_pad_mutex);
const auto config = fxm::get<pad_t>();
if (!config)
@ -427,6 +439,8 @@ error_code cellPadGetRawData(u32 port_no, vm::ptr<CellPadData> data)
{
sys_io.todo("cellPadGetRawData(port_no=%d, data=*0x%x)", port_no, data);
std::lock_guard lock(pad::g_pad_mutex);
const auto config = fxm::get<pad_t>();
if (!config)
@ -456,6 +470,8 @@ error_code cellPadGetDataExtra(u32 port_no, vm::ptr<u32> device_type, vm::ptr<Ce
{
sys_io.trace("cellPadGetDataExtra(port_no=%d, device_type=*0x%x, data=*0x%x)", port_no, device_type, data);
std::lock_guard lock(pad::g_pad_mutex);
const auto config = fxm::get<pad_t>();
if (!config)
@ -495,6 +511,8 @@ error_code cellPadSetActDirect(u32 port_no, vm::ptr<CellPadActParam> param)
{
sys_io.trace("cellPadSetActDirect(port_no=%d, param=*0x%x)", port_no, param);
std::lock_guard lock(pad::g_pad_mutex);
const auto config = fxm::get<pad_t>();
if (!config)
@ -533,6 +551,8 @@ error_code cellPadGetInfo(vm::ptr<CellPadInfo> info)
{
sys_io.trace("cellPadGetInfo(info=*0x%x)", info);
std::lock_guard lock(pad::g_pad_mutex);
const auto config = fxm::get<pad_t>();
if (!config)
@ -570,6 +590,8 @@ error_code cellPadGetInfo2(vm::ptr<CellPadInfo2> info)
{
sys_io.trace("cellPadGetInfo2(info=*0x%x)", info);
std::lock_guard lock(pad::g_pad_mutex);
const auto config = fxm::get<pad_t>();
if (!config)
@ -608,6 +630,8 @@ error_code cellPadGetCapabilityInfo(u32 port_no, vm::ptr<CellPadCapabilityInfo>
{
sys_io.trace("cellPadGetCapabilityInfo(port_no=%d, data_addr:=0x%x)", port_no, info.addr());
std::lock_guard lock(pad::g_pad_mutex);
const auto config = fxm::get<pad_t>();
if (!config)
@ -638,6 +662,8 @@ error_code cellPadSetPortSetting(u32 port_no, u32 port_setting)
{
sys_io.trace("cellPadSetPortSetting(port_no=%d, port_setting=0x%x)", port_no, port_setting);
std::lock_guard lock(pad::g_pad_mutex);
const auto config = fxm::get<pad_t>();
if (!config)
@ -663,6 +689,8 @@ s32 cellPadInfoPressMode(u32 port_no)
{
sys_io.trace("cellPadInfoPressMode(port_no=%d)", port_no);
std::lock_guard lock(pad::g_pad_mutex);
const auto config = fxm::get<pad_t>();
if (!config)
@ -690,6 +718,8 @@ s32 cellPadInfoSensorMode(u32 port_no)
{
sys_io.trace("cellPadInfoSensorMode(port_no=%d)", port_no);
std::lock_guard lock(pad::g_pad_mutex);
const auto config = fxm::get<pad_t>();
if (!config)
@ -717,6 +747,8 @@ error_code cellPadSetPressMode(u32 port_no, u32 mode)
{
sys_io.trace("cellPadSetPressMode(port_no=%d, mode=%d)", port_no, mode);
std::lock_guard lock(pad::g_pad_mutex);
const auto config = fxm::get<pad_t>();
if (!config)
@ -751,6 +783,8 @@ error_code cellPadSetSensorMode(u32 port_no, u32 mode)
{
sys_io.trace("cellPadSetSensorMode(port_no=%d, mode=%d)", port_no, mode);
std::lock_guard lock(pad::g_pad_mutex);
const auto config = fxm::get<pad_t>();
if (!config)
@ -785,6 +819,8 @@ error_code cellPadLddRegisterController()
{
sys_io.todo("cellPadLddRegisterController()");
std::lock_guard lock(pad::g_pad_mutex);
if (!fxm::check<pad_t>())
return CELL_PAD_ERROR_UNINITIALIZED;
@ -799,6 +835,8 @@ error_code cellPadLddDataInsert(s32 handle, vm::ptr<CellPadData> data)
{
sys_io.todo("cellPadLddDataInsert(handle=%d, data=*0x%x)", handle, data);
std::lock_guard lock(pad::g_pad_mutex);
if (!fxm::check<pad_t>())
return CELL_PAD_ERROR_UNINITIALIZED;
@ -816,6 +854,8 @@ error_code cellPadLddGetPortNo(s32 handle)
{
sys_io.todo("cellPadLddGetPortNo(handle=%d)", handle);
std::lock_guard lock(pad::g_pad_mutex);
if (!fxm::check<pad_t>())
return CELL_PAD_ERROR_UNINITIALIZED;
@ -831,6 +871,8 @@ error_code cellPadLddUnregisterController(s32 handle)
{
sys_io.todo("cellPadLddUnregisterController(handle=%d)", handle);
std::lock_guard lock(pad::g_pad_mutex);
if (!fxm::check<pad_t>())
return CELL_PAD_ERROR_UNINITIALIZED;