summaryrefslogtreecommitdiff
path: root/Source
diff options
context:
space:
mode:
authorStenzek <stenzek@users.noreply.github.com>2018-03-28 02:40:53 +1000
committerGitHub <noreply@github.com>2018-03-28 02:40:53 +1000
commit92e7830be9da3ee38183bef6fe8cd0e1ea583105 (patch)
tree44a3cdcceb75f82251bef267f1bc30193cff58af /Source
parent3c61ee5f7f66f84d23e30e86d42e4f100ceedcfa (diff)
parent016ef43b27970126058ce3a7819446703772e025 (diff)
Merge pull request #6540 from spycrab/gcpad_segfault
Core: Check for initialized GCPad before resetting rumble
Diffstat (limited to 'Source')
-rw-r--r--Source/Core/Core/Core.cpp2
-rw-r--r--Source/Core/Core/HW/GCPad.cpp5
-rw-r--r--Source/Core/Core/HW/GCPad.h1
3 files changed, 8 insertions, 0 deletions
diff --git a/Source/Core/Core/Core.cpp b/Source/Core/Core/Core.cpp
index 74ae5d3e5f..99e306cb80 100644
--- a/Source/Core/Core/Core.cpp
+++ b/Source/Core/Core/Core.cpp
@@ -250,6 +250,8 @@ static void ResetRumble()
GCAdapter::ResetRumble();
#endif
#if defined(CIFACE_USE_XINPUT) || defined(CIFACE_USE_DINPUT)
+ if (!Pad::IsInitialized())
+ return;
for (int i = 0; i < 4; ++i)
Pad::ResetRumble(i);
#endif
diff --git a/Source/Core/Core/HW/GCPad.cpp b/Source/Core/Core/HW/GCPad.cpp
index 170e2b4f0e..1ac2a6c3bb 100644
--- a/Source/Core/Core/HW/GCPad.cpp
+++ b/Source/Core/Core/HW/GCPad.cpp
@@ -45,6 +45,11 @@ void LoadConfig()
s_config.LoadConfig(true);
}
+bool IsInitialized()
+{
+ return !s_config.ControllersNeedToBeCreated();
+}
+
GCPadStatus GetStatus(int pad_num)
{
return static_cast<GCPad*>(s_config.GetController(pad_num))->GetInput();
diff --git a/Source/Core/Core/HW/GCPad.h b/Source/Core/Core/HW/GCPad.h
index d3a9572d8c..1594fc9b5d 100644
--- a/Source/Core/Core/HW/GCPad.h
+++ b/Source/Core/Core/HW/GCPad.h
@@ -21,6 +21,7 @@ namespace Pad
void Shutdown();
void Initialize();
void LoadConfig();
+bool IsInitialized();
InputConfig* GetConfig();