|
|
|
@ -32,7 +32,7 @@ static s16 next_pad_circle_y = 0; |
|
|
|
/**
|
|
|
|
* Gets a pointer to the PadData structure inside HID shared memory |
|
|
|
*/ |
|
|
|
static inline SharedMem* GetPadData() { |
|
|
|
static inline SharedMem* GetSharedMem() { |
|
|
|
if (g_shared_mem == nullptr) |
|
|
|
return nullptr; |
|
|
|
return reinterpret_cast<SharedMem*>(g_shared_mem->GetPointer().ValueOr(nullptr)); |
|
|
|
@ -66,28 +66,18 @@ static void UpdateNextCirclePadState() { |
|
|
|
next_pad_circle_y += next_state.circle_up ? max_value : 0x0; |
|
|
|
} |
|
|
|
|
|
|
|
/**
|
|
|
|
* Sets a Pad state (button or button combo) as pressed |
|
|
|
*/ |
|
|
|
void PadButtonPress(const PadState& pad_state) { |
|
|
|
next_state.hex |= pad_state.hex; |
|
|
|
UpdateNextCirclePadState(); |
|
|
|
} |
|
|
|
|
|
|
|
/**
|
|
|
|
* Sets a Pad state (button or button combo) as released |
|
|
|
*/ |
|
|
|
void PadButtonRelease(const PadState& pad_state) { |
|
|
|
next_state.hex &= ~pad_state.hex; |
|
|
|
UpdateNextCirclePadState(); |
|
|
|
} |
|
|
|
|
|
|
|
/**
|
|
|
|
* Called after all Pad changes to be included in this update have been made, |
|
|
|
* including both Pad key changes and analog circle Pad changes. |
|
|
|
*/ |
|
|
|
void PadUpdateComplete() { |
|
|
|
SharedMem* shared_mem = GetPadData(); |
|
|
|
SharedMem* shared_mem = GetSharedMem(); |
|
|
|
|
|
|
|
if (shared_mem == nullptr) |
|
|
|
return; |
|
|
|
@ -135,17 +125,6 @@ void PadUpdateComplete() { |
|
|
|
g_event_pad_or_touch_2->Signal(); |
|
|
|
} |
|
|
|
|
|
|
|
// If we just updated index 0, provide a new timestamp
|
|
|
|
if (pad_data->index == 0) { |
|
|
|
pad_data->index_reset_ticks_previous = pad_data->index_reset_ticks; |
|
|
|
pad_data->index_reset_ticks = (s64)Core::g_app_core->GetTicks(); |
|
|
|
} |
|
|
|
|
|
|
|
// Signal both handles when there's an update to Pad or touch
|
|
|
|
g_event_pad_or_touch_1->Signal(); |
|
|
|
g_event_pad_or_touch_2->Signal(); |
|
|
|
} |
|
|
|
|
|
|
|
void GetIPCHandles(Service::Interface* self) { |
|
|
|
u32* cmd_buff = Kernel::GetCommandBuffer(); |
|
|
|
|
|
|
|
|