summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGravatar bunnei2019-10-01 10:58:02 -0400
committerGravatar GitHub2019-10-01 10:58:02 -0400
commit5e677a3178ef0a6c98eb966ed5f0ae5d295aa4f4 (patch)
tree7f2eef306f09042ac5bce750c8399168876b7169 /src
parentMerge pull request #2924 from MysticExile/readme-2 (diff)
parentSignal styleset changes at a better time (diff)
downloadyuzu-5e677a3178ef0a6c98eb966ed5f0ae5d295aa4f4.tar.gz
yuzu-5e677a3178ef0a6c98eb966ed5f0ae5d295aa4f4.tar.xz
yuzu-5e677a3178ef0a6c98eb966ed5f0ae5d295aa4f4.zip
Merge pull request #2904 from ogniK5377/better-signal-hid
Signal styleset changes at a better time
Diffstat (limited to 'src')
-rw-r--r--src/core/hle/service/hid/controllers/npad.cpp10
1 files changed, 2 insertions, 8 deletions
diff --git a/src/core/hle/service/hid/controllers/npad.cpp b/src/core/hle/service/hid/controllers/npad.cpp
index 44b668fbf..a9cd119c4 100644
--- a/src/core/hle/service/hid/controllers/npad.cpp
+++ b/src/core/hle/service/hid/controllers/npad.cpp
@@ -165,13 +165,14 @@ void Controller_NPad::InitNewlyAddedControler(std::size_t controller_idx) {
165 controller.battery_level[0] = BATTERY_FULL; 165 controller.battery_level[0] = BATTERY_FULL;
166 controller.battery_level[1] = BATTERY_FULL; 166 controller.battery_level[1] = BATTERY_FULL;
167 controller.battery_level[2] = BATTERY_FULL; 167 controller.battery_level[2] = BATTERY_FULL;
168 styleset_changed_events[controller_idx].writable->Signal();
168} 169}
169 170
170void Controller_NPad::OnInit() { 171void Controller_NPad::OnInit() {
171 auto& kernel = system.Kernel(); 172 auto& kernel = system.Kernel();
172 for (std::size_t i = 0; i < styleset_changed_events.size(); i++) { 173 for (std::size_t i = 0; i < styleset_changed_events.size(); i++) {
173 styleset_changed_events[i] = Kernel::WritableEvent::CreateEventPair( 174 styleset_changed_events[i] = Kernel::WritableEvent::CreateEventPair(
174 kernel, Kernel::ResetType::Automatic, fmt::format("npad:NpadStyleSetChanged_{}", i)); 175 kernel, Kernel::ResetType::Manual, fmt::format("npad:NpadStyleSetChanged_{}", i));
175 } 176 }
176 177
177 if (!IsControllerActivated()) { 178 if (!IsControllerActivated()) {
@@ -433,7 +434,6 @@ void Controller_NPad::SetSupportedNPadIdTypes(u8* data, std::size_t length) {
433 supported_npad_id_types.clear(); 434 supported_npad_id_types.clear();
434 supported_npad_id_types.resize(length / sizeof(u32)); 435 supported_npad_id_types.resize(length / sizeof(u32));
435 std::memcpy(supported_npad_id_types.data(), data, length); 436 std::memcpy(supported_npad_id_types.data(), data, length);
436 bool had_controller_update = false;
437 for (std::size_t i = 0; i < connected_controllers.size(); i++) { 437 for (std::size_t i = 0; i < connected_controllers.size(); i++) {
438 auto& controller = connected_controllers[i]; 438 auto& controller = connected_controllers[i];
439 if (!controller.is_connected) { 439 if (!controller.is_connected) {
@@ -452,10 +452,6 @@ void Controller_NPad::SetSupportedNPadIdTypes(u8* data, std::size_t length) {
452 controller.type = requested_controller; 452 controller.type = requested_controller;
453 InitNewlyAddedControler(i); 453 InitNewlyAddedControler(i);
454 } 454 }
455 had_controller_update = true;
456 }
457 if (had_controller_update) {
458 styleset_changed_events[i].writable->Signal();
459 } 455 }
460 } 456 }
461} 457}
@@ -481,7 +477,6 @@ void Controller_NPad::SetNpadMode(u32 npad_id, NPadAssignments assignment_mode)
481 const std::size_t npad_index = NPadIdToIndex(npad_id); 477 const std::size_t npad_index = NPadIdToIndex(npad_id);
482 ASSERT(npad_index < shared_memory_entries.size()); 478 ASSERT(npad_index < shared_memory_entries.size());
483 if (shared_memory_entries[npad_index].pad_assignment != assignment_mode) { 479 if (shared_memory_entries[npad_index].pad_assignment != assignment_mode) {
484 styleset_changed_events[npad_index].writable->Signal();
485 shared_memory_entries[npad_index].pad_assignment = assignment_mode; 480 shared_memory_entries[npad_index].pad_assignment = assignment_mode;
486 } 481 }
487} 482}
@@ -507,7 +502,6 @@ Kernel::SharedPtr<Kernel::ReadableEvent> Controller_NPad::GetStyleSetChangedEven
507 // TODO(ogniK): Figure out the best time to signal this event. This event seems that it should 502 // TODO(ogniK): Figure out the best time to signal this event. This event seems that it should
508 // be signalled at least once, and signaled after a new controller is connected? 503 // be signalled at least once, and signaled after a new controller is connected?
509 const auto& styleset_event = styleset_changed_events[NPadIdToIndex(npad_id)]; 504 const auto& styleset_event = styleset_changed_events[NPadIdToIndex(npad_id)];
510 styleset_event.writable->Signal();
511 return styleset_event.readable; 505 return styleset_event.readable;
512} 506}
513 507