From 63e135590cadb827aa0301b7d07128b6092e7d65 Mon Sep 17 00:00:00 2001 From: Triang3l Date: Wed, 17 Apr 2019 16:40:35 +0300 Subject: [PATCH] [UI] Host breakpoint shortcut (pauses WinDbg) --- src/xenia/app/emulator_window.cc | 13 ++++++++++++- src/xenia/app/emulator_window.h | 1 + 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/xenia/app/emulator_window.cc b/src/xenia/app/emulator_window.cc index 9589f6f8a..333d854f7 100644 --- a/src/xenia/app/emulator_window.cc +++ b/src/xenia/app/emulator_window.cc @@ -14,6 +14,7 @@ #include "third_party/imgui/imgui.h" #include "xenia/base/clock.h" +#include "xenia/base/debugging.h" #include "xenia/base/logging.h" #include "xenia/base/platform.h" #include "xenia/base/profiling.h" @@ -142,6 +143,9 @@ bool EmulatorWindow::Initialize() { case 0x13: { // VK_PAUSE CpuBreakIntoDebugger(); } break; + case 0x03: { // VK_CANCEL + CpuBreakIntoHostDebugger(); + } break; case 0x70: { // VK_F1 ShowHelpWebsite(); @@ -208,8 +212,13 @@ bool EmulatorWindow::Initialize() { cpu_menu->AddChild(MenuItem::Create(MenuItem::Type::kSeparator)); { cpu_menu->AddChild(MenuItem::Create( - MenuItem::Type::kString, L"&Break and Show Debugger", L"Pause/Break", + MenuItem::Type::kString, L"&Break and Show Guest Debugger", + L"Pause/Break", std::bind(&EmulatorWindow::CpuBreakIntoDebugger, this))); + cpu_menu->AddChild(MenuItem::Create( + MenuItem::Type::kString, L"&Break into Host Debugger", + L"Ctrl+Pause/Break", + std::bind(&EmulatorWindow::CpuBreakIntoHostDebugger, this))); } main_menu->AddChild(std::move(cpu_menu)); @@ -366,6 +375,8 @@ void EmulatorWindow::CpuBreakIntoDebugger() { } } +void EmulatorWindow::CpuBreakIntoHostDebugger() { xe::debugging::Break(); } + void EmulatorWindow::GpuTraceFrame() { emulator()->graphics_system()->RequestFrameTrace(); } diff --git a/src/xenia/app/emulator_window.h b/src/xenia/app/emulator_window.h index ff081175f..758f079f1 100644 --- a/src/xenia/app/emulator_window.h +++ b/src/xenia/app/emulator_window.h @@ -51,6 +51,7 @@ class EmulatorWindow { void CpuTimeScalarSetHalf(); void CpuTimeScalarSetDouble(); void CpuBreakIntoDebugger(); + void CpuBreakIntoHostDebugger(); void GpuTraceFrame(); void GpuClearCaches(); void ShowHelpWebsite();