Merge pull request #2904 from ogniK5377/better-signal-hid
Signal styleset changes at a better time
This commit is contained in:
commit
5e677a3178
@ -165,13 +165,14 @@ void Controller_NPad::InitNewlyAddedControler(std::size_t controller_idx) {
|
|||||||
controller.battery_level[0] = BATTERY_FULL;
|
controller.battery_level[0] = BATTERY_FULL;
|
||||||
controller.battery_level[1] = BATTERY_FULL;
|
controller.battery_level[1] = BATTERY_FULL;
|
||||||
controller.battery_level[2] = BATTERY_FULL;
|
controller.battery_level[2] = BATTERY_FULL;
|
||||||
|
styleset_changed_events[controller_idx].writable->Signal();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Controller_NPad::OnInit() {
|
void Controller_NPad::OnInit() {
|
||||||
auto& kernel = system.Kernel();
|
auto& kernel = system.Kernel();
|
||||||
for (std::size_t i = 0; i < styleset_changed_events.size(); i++) {
|
for (std::size_t i = 0; i < styleset_changed_events.size(); i++) {
|
||||||
styleset_changed_events[i] = Kernel::WritableEvent::CreateEventPair(
|
styleset_changed_events[i] = Kernel::WritableEvent::CreateEventPair(
|
||||||
kernel, Kernel::ResetType::Automatic, fmt::format("npad:NpadStyleSetChanged_{}", i));
|
kernel, Kernel::ResetType::Manual, fmt::format("npad:NpadStyleSetChanged_{}", i));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!IsControllerActivated()) {
|
if (!IsControllerActivated()) {
|
||||||
@ -433,7 +434,6 @@ void Controller_NPad::SetSupportedNPadIdTypes(u8* data, std::size_t length) {
|
|||||||
supported_npad_id_types.clear();
|
supported_npad_id_types.clear();
|
||||||
supported_npad_id_types.resize(length / sizeof(u32));
|
supported_npad_id_types.resize(length / sizeof(u32));
|
||||||
std::memcpy(supported_npad_id_types.data(), data, length);
|
std::memcpy(supported_npad_id_types.data(), data, length);
|
||||||
bool had_controller_update = false;
|
|
||||||
for (std::size_t i = 0; i < connected_controllers.size(); i++) {
|
for (std::size_t i = 0; i < connected_controllers.size(); i++) {
|
||||||
auto& controller = connected_controllers[i];
|
auto& controller = connected_controllers[i];
|
||||||
if (!controller.is_connected) {
|
if (!controller.is_connected) {
|
||||||
@ -452,10 +452,6 @@ void Controller_NPad::SetSupportedNPadIdTypes(u8* data, std::size_t length) {
|
|||||||
controller.type = requested_controller;
|
controller.type = requested_controller;
|
||||||
InitNewlyAddedControler(i);
|
InitNewlyAddedControler(i);
|
||||||
}
|
}
|
||||||
had_controller_update = true;
|
|
||||||
}
|
|
||||||
if (had_controller_update) {
|
|
||||||
styleset_changed_events[i].writable->Signal();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -481,7 +477,6 @@ void Controller_NPad::SetNpadMode(u32 npad_id, NPadAssignments assignment_mode)
|
|||||||
const std::size_t npad_index = NPadIdToIndex(npad_id);
|
const std::size_t npad_index = NPadIdToIndex(npad_id);
|
||||||
ASSERT(npad_index < shared_memory_entries.size());
|
ASSERT(npad_index < shared_memory_entries.size());
|
||||||
if (shared_memory_entries[npad_index].pad_assignment != assignment_mode) {
|
if (shared_memory_entries[npad_index].pad_assignment != assignment_mode) {
|
||||||
styleset_changed_events[npad_index].writable->Signal();
|
|
||||||
shared_memory_entries[npad_index].pad_assignment = assignment_mode;
|
shared_memory_entries[npad_index].pad_assignment = assignment_mode;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -507,7 +502,6 @@ Kernel::SharedPtr<Kernel::ReadableEvent> Controller_NPad::GetStyleSetChangedEven
|
|||||||
// TODO(ogniK): Figure out the best time to signal this event. This event seems that it should
|
// TODO(ogniK): Figure out the best time to signal this event. This event seems that it should
|
||||||
// be signalled at least once, and signaled after a new controller is connected?
|
// be signalled at least once, and signaled after a new controller is connected?
|
||||||
const auto& styleset_event = styleset_changed_events[NPadIdToIndex(npad_id)];
|
const auto& styleset_event = styleset_changed_events[NPadIdToIndex(npad_id)];
|
||||||
styleset_event.writable->Signal();
|
|
||||||
return styleset_event.readable;
|
return styleset_event.readable;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user