diff --git a/Source/Plugins/Plugin_PadSimple/Src/PadSimple.cpp b/Source/Plugins/Plugin_PadSimple/Src/PadSimple.cpp index 35f77b3646..f546b8295d 100644 --- a/Source/Plugins/Plugin_PadSimple/Src/PadSimple.cpp +++ b/Source/Plugins/Plugin_PadSimple/Src/PadSimple.cpp @@ -60,6 +60,10 @@ SPADInitialize g_PADInitialize; SPADStatus recordBuffer[RECORD_SIZE]; int count = 0; +//****************************************************************************** +// Supporting functions +//****************************************************************************** + void RecordInput(const SPADStatus& _rPADStatus) { if (count >= RECORD_SIZE) @@ -102,6 +106,18 @@ void SaveRecord() } } +// Check if Dolphin is in focus +bool IsFocus() +{ + HWND Parent = GetParent(g_PADInitialize.hWnd); + HWND TopLevel = GetParent(Parent); + // Support both rendering to main window and not + if (GetForegroundWindow() == TopLevel || GetForegroundWindow() == g_PADInitialize.hWnd) + return true; + else + return false; +} + #ifdef _WIN32 @@ -147,6 +163,11 @@ BOOL APIENTRY DllMain(HINSTANCE hinstDLL, // DLL module handle #endif +//****************************************************************************** +// Plugin specification functions +//****************************************************************************** + + void GetDllInfo(PLUGIN_INFO* _PluginInfo) { _PluginInfo->Version = 0x0100; @@ -618,8 +639,7 @@ void PAD_GetStatus(u8 _numPAD, SPADStatus* _pPADStatus) // TODO fix g_PADInitialize.hWnd != DolphinWX frame if (pad[_numPAD].bDisable) { - if (g_PADInitialize.hWnd != GetForegroundWindow()) - return; + if (!IsFocus()) return; } // Dolphin doesn't really care about the pad error codes anyways... _pPADStatus->err = PAD_ERR_NONE; @@ -689,6 +709,9 @@ unsigned int PAD_GetAttachedPads() return connected; } +//****************************************************************************** +// Load and save the configuration +//****************************************************************************** void LoadConfig() { diff --git a/Source/Plugins/Plugin_PadSimple/Src/PadSimple.h b/Source/Plugins/Plugin_PadSimple/Src/PadSimple.h index 8644217420..53e82feb25 100644 --- a/Source/Plugins/Plugin_PadSimple/Src/PadSimple.h +++ b/Source/Plugins/Plugin_PadSimple/Src/PadSimple.h @@ -86,5 +86,6 @@ extern SPads pad[]; void LoadConfig(); void SaveConfig(); +bool IsFocus(); #endif