From fc730b76dfae6620c9cb6015e58e1b22000b58d1 Mon Sep 17 00:00:00 2001 From: Henrik Rydgard Date: Wed, 5 Apr 2017 14:13:25 +0200 Subject: [PATCH] Fix XInput polling in UWP apps. Should help #9555 --- .gitignore | 1 + UI/NativeApp.cpp | 4 +++- UWP/PPSSPP_UWPMain.cpp | 2 ++ UWP/UWP.vcxproj | 8 +++++--- UWP/UWP.vcxproj.filters | 2 ++ Windows/InputDevice.cpp | 3 --- 6 files changed, 13 insertions(+), 7 deletions(-) diff --git a/.gitignore b/.gitignore index 94e91f9e1d..5b59310999 100644 --- a/.gitignore +++ b/.gitignore @@ -36,6 +36,7 @@ PPSSPPWindows.exe.manifest PPSSPPDebug64.exe.manifest PPSSPPDebug.exe.manifest assets/flash0 +UWP/icph # For Mac .DS_Store diff --git a/UI/NativeApp.cpp b/UI/NativeApp.cpp index 63774b03a4..b609fdee6b 100644 --- a/UI/NativeApp.cpp +++ b/UI/NativeApp.cpp @@ -329,7 +329,7 @@ void NativeInit(int argc, const char *argv[], const char *savegame_dir, const ch VFSRegister("", new DirectoryAssetReader("assets/")); VFSRegister("", new DirectoryAssetReader(savegame_dir)); -#if defined(MOBILE_DEVICE) || !defined(USING_QT_UI) +#if defined(MOBILE_DEVICE) || !defined(USING_QT_UI) && !PPSSPP_PLATFORM(UWP) host = new NativeHost(); #endif @@ -1060,7 +1060,9 @@ void NativeShutdown() { delete screenManager; screenManager = 0; +#if !PPSSPP_PLATFORM(UWP) delete host; +#endif host = 0; g_Config.Save(); LogManager::Shutdown(); diff --git a/UWP/PPSSPP_UWPMain.cpp b/UWP/PPSSPP_UWPMain.cpp index 599299a66e..a622b8af3d 100644 --- a/UWP/PPSSPP_UWPMain.cpp +++ b/UWP/PPSSPP_UWPMain.cpp @@ -128,9 +128,11 @@ PPSSPP_UWPMain::PPSSPP_UWPMain(App ^app, const std::shared_ptrGetScreenViewport().Height; ctx_->GetDrawContext()->HandleEvent(Draw::Event::GOT_BACKBUFFER, width, height, m_deviceResources->GetBackBufferRenderTargetView()); + InputDevice::BeginPolling(); } PPSSPP_UWPMain::~PPSSPP_UWPMain() { + InputDevice::StopPolling(); ctx_->GetDrawContext()->HandleEvent(Draw::Event::LOST_BACKBUFFER, 0, 0, nullptr); NativeShutdownGraphics(); NativeShutdown(); diff --git a/UWP/UWP.vcxproj b/UWP/UWP.vcxproj index 5206fa678e..4be8a7258b 100644 --- a/UWP/UWP.vcxproj +++ b/UWP/UWP.vcxproj @@ -178,7 +178,7 @@ copy AssetsNormal\*.* Assets /Y - libavcodec.a;libavformat.a;libavutil.a;libswresample.a;libswscale.a;d2d1.lib; d3d11.lib; dxgi.lib; windowscodecs.lib; dwrite.lib; %(AdditionalDependencies) + xinputuap.lib;libavcodec.a;libavformat.a;libavutil.a;libswresample.a;libswscale.a;d2d1.lib; d3d11.lib; dxgi.lib; windowscodecs.lib; dwrite.lib; %(AdditionalDependencies) ../ffmpeg/Windows10/ARM/lib;%(AdditionalLibraryDirectories); $(VCInstallDir)\lib\store\arm; $(VCInstallDir)\lib\arm @@ -241,7 +241,7 @@ copy AssetsNormal\*.* Assets /Y - libavcodec.a;libavformat.a;libavutil.a;libswresample.a;libswscale.a;d2d1.lib; d3d11.lib; dxgi.lib; windowscodecs.lib; dwrite.lib; %(AdditionalDependencies) + xinputuap.lib;libavcodec.a;libavformat.a;libavutil.a;libswresample.a;libswscale.a;d2d1.lib; d3d11.lib; dxgi.lib; windowscodecs.lib; dwrite.lib; %(AdditionalDependencies) ../ffmpeg/Windows10/x86/lib;%(AdditionalLibraryDirectories); $(VCInstallDir)\lib\store; $(VCInstallDir)\lib @@ -304,7 +304,7 @@ copy AssetsNormal\*.* Assets /Y - libavcodec.a;libavformat.a;libavutil.a;libswresample.a;libswscale.a;d2d1.lib; d3d11.lib; dxgi.lib; windowscodecs.lib; dwrite.lib; %(AdditionalDependencies) + xinputuap.lib;libavcodec.a;libavformat.a;libavutil.a;libswresample.a;libswscale.a;d2d1.lib; d3d11.lib; dxgi.lib; windowscodecs.lib; dwrite.lib; %(AdditionalDependencies) ../ffmpeg/Windows10/x64/lib;%(AdditionalLibraryDirectories); $(VCInstallDir)\lib\store\amd64; $(VCInstallDir)\lib\amd64 @@ -378,6 +378,7 @@ copy AssetsGold\*.* Assets /Y + @@ -403,6 +404,7 @@ copy AssetsGold\*.* Assets /Y NotUsing NotUsing + diff --git a/UWP/UWP.vcxproj.filters b/UWP/UWP.vcxproj.filters index 18938e7ad7..32322f065e 100644 --- a/UWP/UWP.vcxproj.filters +++ b/UWP/UWP.vcxproj.filters @@ -50,6 +50,7 @@ + @@ -63,6 +64,7 @@ + diff --git a/Windows/InputDevice.cpp b/Windows/InputDevice.cpp index c9eae63f54..6cdfe36eff 100644 --- a/Windows/InputDevice.cpp +++ b/Windows/InputDevice.cpp @@ -25,9 +25,6 @@ #include "Core/Config.h" #include "Core/Host.h" #include "Windows/InputDevice.h" -#include "Windows/XinputDevice.h" -#include "Windows/DinputDevice.h" -#include "Windows/KeyboardDevice.h" #include "Windows/WindowsHost.h" static volatile bool inputThreadStatus = false;