From 513223ea4f37f5a9b5fa2f342eef0850692fdc89 Mon Sep 17 00:00:00 2001 From: Kingcom Date: Sat, 28 Sep 2013 14:34:08 +0200 Subject: [PATCH] -Step through display list with F10/F11 -accelerator changes --- Windows/Debugger/Debugger_Disasm.cpp | 4 +--- Windows/GEDebugger/CtrlDisplayListView.cpp | 8 ++++++- Windows/GEDebugger/GEDebugger.cpp | 25 ++++++++++++++-------- Windows/GEDebugger/GEDebugger.h | 6 ++++++ Windows/Globals.cpp | 2 +- Windows/WndMainWindow.cpp | 9 ++++++++ Windows/main.cpp | 17 +++++++++++---- Windows/main.h | 4 +++- 8 files changed, 56 insertions(+), 19 deletions(-) diff --git a/Windows/Debugger/Debugger_Disasm.cpp b/Windows/Debugger/Debugger_Disasm.cpp index db4f40f677..2029e2008d 100644 --- a/Windows/Debugger/Debugger_Disasm.cpp +++ b/Windows/Debugger/Debugger_Disasm.cpp @@ -708,9 +708,7 @@ BOOL CDisasm::DlgProc(UINT message, WPARAM wParam, LPARAM lParam) case WM_ACTIVATE: if (wParam == WA_ACTIVE || wParam == WA_CLICKACTIVE) { - g_debuggerActive = true; - } else { - g_debuggerActive = false; + g_activeWindow = WINDOW_CPUDEBUGGER; } break; } diff --git a/Windows/GEDebugger/CtrlDisplayListView.cpp b/Windows/GEDebugger/CtrlDisplayListView.cpp index 72f40b9d86..df701bcf33 100644 --- a/Windows/GEDebugger/CtrlDisplayListView.cpp +++ b/Windows/GEDebugger/CtrlDisplayListView.cpp @@ -1,5 +1,6 @@ #include "Windows/GEDebugger/CtrlDisplayListView.h" #include "Core/Config.h" +#include "Windows/GEDebugger/GEDebugger.h" const PTCHAR CtrlDisplayListView::windowClass = _T("CtrlDisplayListView"); @@ -98,8 +99,9 @@ LRESULT CALLBACK CtrlDisplayListView::wndProc(HWND hwnd, UINT msg, WPARAM wParam win->onMouseDown(wParam,lParam,1); break; case WM_KEYDOWN: + case WM_SYSKEYDOWN: win->onKeyDown(wParam,lParam); - break; + return 0; case WM_GETDLGCODE: if (lParam && ((MSG*)lParam)->message == WM_KEYDOWN) { @@ -290,6 +292,10 @@ void CtrlDisplayListView::onKeyDown(WPARAM wParam, LPARAM lParam) case VK_LEFT: gotoAddr(list.pc); return; + case VK_F10: + case VK_F11: + SendMessage(GetParent(wnd),WM_GEDBG_STEPDISPLAYLIST,0,0); + break; } redraw(); } diff --git a/Windows/GEDebugger/GEDebugger.cpp b/Windows/GEDebugger/GEDebugger.cpp index b2605221a8..e23f635e47 100644 --- a/Windows/GEDebugger/GEDebugger.cpp +++ b/Windows/GEDebugger/GEDebugger.cpp @@ -32,9 +32,6 @@ #include #include -const UINT WM_GEDBG_BREAK_CMD = WM_USER + 200; -const UINT WM_GEDBG_BREAK_DRAW = WM_USER + 201; - enum PauseAction { PAUSE_CONTINUE, PAUSE_GETFRAMEBUF, @@ -252,6 +249,12 @@ BOOL CGEDebugger::DlgProc(UINT message, WPARAM wParam, LPARAM lParam) { SetupPreviews(); break; + case WM_ACTIVATE: + if (wParam == WA_ACTIVE || wParam == WA_CLICKACTIVE) { + g_activeWindow = WINDOW_GEDEBUGGER; + } + break; + case WM_NOTIFY: switch (wParam) { @@ -282,12 +285,7 @@ BOOL CGEDebugger::DlgProc(UINT message, WPARAM wParam, LPARAM lParam) { break; case IDC_GEDBG_STEP: - attached = true; - SetupPreviews(); - - pauseWait.notify_one(); - breakNextOp = true; - breakNextDraw = false; + SendMessage(m_hDlg,WM_GEDBG_STEPDISPLAYLIST,0,0); break; case IDC_GEDBG_RESUME: @@ -316,6 +314,15 @@ BOOL CGEDebugger::DlgProc(UINT message, WPARAM wParam, LPARAM lParam) { UpdatePreviews(); } break; + + case WM_GEDBG_STEPDISPLAYLIST: + attached = true; + SetupPreviews(); + + pauseWait.notify_one(); + breakNextOp = true; + breakNextDraw = false; + break; } return FALSE; diff --git a/Windows/GEDebugger/GEDebugger.h b/Windows/GEDebugger/GEDebugger.h index 6f775e7961..69134919b1 100644 --- a/Windows/GEDebugger/GEDebugger.h +++ b/Windows/GEDebugger/GEDebugger.h @@ -23,6 +23,12 @@ #include "Windows/W32Util/DialogManager.h" #include "Windows/GEDebugger/SimpleGLWindow.h" +enum { + WM_GEDBG_BREAK_CMD = WM_USER + 200, + WM_GEDBG_BREAK_DRAW, + WM_GEDBG_STEPDISPLAYLIST, +}; + class CtrlDisplayListView; class CGEDebugger : public Dialog { diff --git a/Windows/Globals.cpp b/Windows/Globals.cpp index 36ed0137f6..60d438b226 100644 --- a/Windows/Globals.cpp +++ b/Windows/Globals.cpp @@ -24,6 +24,6 @@ // Globals HMENU g_hPopupMenus; -bool g_debuggerActive = false; +int g_activeWindow = 0; #endif diff --git a/Windows/WndMainWindow.cpp b/Windows/WndMainWindow.cpp index 2fac8891a6..aa44eeffa1 100644 --- a/Windows/WndMainWindow.cpp +++ b/Windows/WndMainWindow.cpp @@ -838,6 +838,9 @@ namespace MainWindow switch (message) { case WM_ACTIVATE: + if (wParam == WA_ACTIVE || wParam == WA_CLICKACTIVE) { + g_activeWindow = WINDOW_MAINWINDOW; + } break; case WM_SETFOCUS: @@ -997,6 +1000,12 @@ namespace MainWindow switch (message) { case WM_CREATE: break; + + case WM_ACTIVATE: + if (wParam == WA_ACTIVE || wParam == WA_CLICKACTIVE) { + g_activeWindow = WINDOW_MAINWINDOW; + } + break; case WM_MOVE: SavePosition(); diff --git a/Windows/main.cpp b/Windows/main.cpp index d6d6b03283..e1385b049b 100644 --- a/Windows/main.cpp +++ b/Windows/main.cpp @@ -224,12 +224,21 @@ int WINAPI WinMain(HINSTANCE _hInstance, HINSTANCE hPrevInstance, LPSTR szCmdLin //Translate accelerators and dialog messages... HWND wnd; HACCEL accel; - if (g_debuggerActive) { - wnd = disasmWindow[0]->GetDlgHandle(); - accel = hDebugAccelTable; - } else { + switch (g_activeWindow) + { + case WINDOW_MAINWINDOW: wnd = hwndMain; accel = hAccelTable; + break; + case WINDOW_CPUDEBUGGER: + wnd = disasmWindow[0]->GetDlgHandle(); + accel = hDebugAccelTable; + break; + case WINDOW_GEDEBUGGER: + default: + wnd = 0; + accel = 0; + break; } if (!TranslateAccelerator(wnd, accel, &msg)) diff --git a/Windows/main.h b/Windows/main.h index 70f6ca5b9f..2990c93731 100644 --- a/Windows/main.h +++ b/Windows/main.h @@ -31,4 +31,6 @@ extern CGEDebugger *geDebuggerWindow ; extern CMemoryDlg *memoryWindow[MAX_CPUCOUNT]; extern HMENU g_hPopupMenus; -extern bool g_debuggerActive; \ No newline at end of file +extern int g_activeWindow; + +enum { WINDOW_MAINWINDOW, WINDOW_CPUDEBUGGER, WINDOW_GEDEBUGGER }; \ No newline at end of file