diff --git a/src/hid_core/frontend/emulated_controller.cpp b/src/hid_core/frontend/emulated_controller.cpp
index e12e5a77ea..063f5b15a6 100644
--- a/src/hid_core/frontend/emulated_controller.cpp
+++ b/src/hid_core/frontend/emulated_controller.cpp
@@ -110,7 +110,11 @@ void EmulatedController::ReloadFromSettings() {
         original_npad_type = npad_type;
     }
 
-    SetPollingMode(EmulatedDeviceIndex::RightIndex, Common::Input::PollingMode::Active);
+    // Disable special features before disconnecting
+    if (controller.right_polling_mode != Common::Input::PollingMode::Active) {
+        SetPollingMode(EmulatedDeviceIndex::RightIndex, Common::Input::PollingMode::Active);
+    }
+
     Disconnect();
     if (player.connected) {
         Connect();