From ba69056361c66d254965e91df80a4850dcd51bfe Mon Sep 17 00:00:00 2001 From: OsirizX Date: Sat, 29 Jun 2019 00:21:59 -0700 Subject: [PATCH] UWP: CoreWindow NULL check We need to make sure CoreWindow isn't NULL before checking key states otherwise access violation will occur and cause the app to crash. This commit fixes running Dolphin core in particular and tested on both desktop UWP and Xbox One. --- uwp/uwp_main.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/uwp/uwp_main.cpp b/uwp/uwp_main.cpp index 0d36f86157..939f310fe8 100644 --- a/uwp/uwp_main.cpp +++ b/uwp/uwp_main.cpp @@ -574,7 +574,14 @@ extern "C" { bool uwp_keyboard_pressed(unsigned key) { unsigned sym = rarch_keysym_lut[(enum retro_key)key]; - return (CoreWindow::GetForCurrentThread()->GetKeyState((VirtualKey)sym) & CoreVirtualKeyStates::Down) == CoreVirtualKeyStates::Down; + CoreWindow^ window = CoreWindow::GetForCurrentThread(); + if (!window) + { + // At times CoreWindow will return NULL while running Dolphin core + // Dolphin core runs on its own CPU thread separate from the UI-thread and so we must do a check for this. + return false; + } + return (window->GetKeyState((VirtualKey)sym) & CoreVirtualKeyStates::Down) == CoreVirtualKeyStates::Down; } int16_t uwp_mouse_state(unsigned port, unsigned id, bool screen)