mirror of
https://github.com/hrydgard/ppsspp.git
synced 2026-10-16 16:00:30 +02:00
Right click menu for CtrlDisplayListView
This commit is contained in:
1 parent
a176fb85d3
commit
f388697f88
6 files changed
+107
-4
No files matched your search
@@ -1,10 +1,14 @@
|
||||
#include "Windows/GEDebugger/CtrlDisplayListView.h"
|
||||
#include "Core/Config.h"
|
||||
#include "Windows/GEDebugger/GEDebugger.h"
|
||||
#include "Windows/Main.h"
|
||||
#include <algorithm>
|
||||
|
||||
const PTCHAR CtrlDisplayListView::windowClass = _T("CtrlDisplayListView");
|
||||
|
||||
const int POPUP_SUBMENU_ID_DISPLAYLISTVIEW = 8;
|
||||
extern HMENU g_hPopupMenus;
|
||||
|
||||
void CtrlDisplayListView::registerClass()
|
||||
{
|
||||
WNDCLASSEX wndClass;
|
||||
@@ -99,6 +103,15 @@ LRESULT CALLBACK CtrlDisplayListView::wndProc(HWND hwnd, UINT msg, WPARAM wParam
|
||||
case WM_LBUTTONDOWN:
|
||||
win->onMouseDown(wParam,lParam,1);
|
||||
break;
|
||||
case WM_RBUTTONDOWN:
|
||||
win->onMouseDown(wParam,lParam,2);
|
||||
break;
|
||||
case WM_LBUTTONUP:
|
||||
win->onMouseUp(wParam,lParam,1);
|
||||
break;
|
||||
case WM_RBUTTONUP:
|
||||
win->onMouseUp(wParam,lParam,2);
|
||||
break;
|
||||
case WM_KEYDOWN:
|
||||
case WM_SYSKEYDOWN:
|
||||
win->onKeyDown(wParam,lParam);
|
||||
@@ -261,6 +274,71 @@ void CtrlDisplayListView::onMouseDown(WPARAM wParam, LPARAM lParam, int button)
|
||||
redraw();
|
||||
}
|
||||
|
||||
void CtrlDisplayListView::onMouseUp(WPARAM wParam, LPARAM lParam, int button)
|
||||
{
|
||||
if (button == 2)
|
||||
{
|
||||
//popup menu?
|
||||
POINT pt;
|
||||
GetCursorPos(&pt);
|
||||
switch(TrackPopupMenuEx(GetSubMenu(g_hPopupMenus,POPUP_SUBMENU_ID_DISPLAYLISTVIEW),TPM_RIGHTBUTTON|TPM_RETURNCMD,pt.x,pt.y,wnd,0))
|
||||
{
|
||||
case ID_DISASM_GOTOINMEMORYVIEW:
|
||||
for (int i=0; i<numCPUs; i++)
|
||||
if (memoryWindow[i])
|
||||
memoryWindow[i]->Goto(curAddress);
|
||||
break;
|
||||
case ID_DISASM_TOGGLEBREAKPOINT:
|
||||
toggleBreakpoint();
|
||||
redraw();
|
||||
break;
|
||||
case ID_DISASM_COPYINSTRUCTIONDISASM:
|
||||
{
|
||||
GPUDebugOp op = gpuDebug->DissassembleOp(curAddress);
|
||||
W32Util::CopyTextToClipboard(wnd, op.desc.c_str());
|
||||
}
|
||||
break;
|
||||
case ID_DISASM_COPYADDRESS:
|
||||
{
|
||||
char temp[16];
|
||||
sprintf(temp,"%08X",curAddress);
|
||||
W32Util::CopyTextToClipboard(wnd, temp);
|
||||
}
|
||||
break;
|
||||
case ID_DISASM_SETPCTOHERE:
|
||||
{
|
||||
gpuDebug->ResetListPC(list.id,curAddress);
|
||||
list.pc = curAddress;
|
||||
redraw();
|
||||
}
|
||||
break;
|
||||
case IDC_DEBUG_LIST_SETSTALL:
|
||||
{
|
||||
gpuDebug->ResetListStall(list.id,curAddress);
|
||||
list.stall = curAddress;
|
||||
redraw();
|
||||
}
|
||||
break;
|
||||
case ID_DISASM_COPYINSTRUCTIONHEX:
|
||||
{
|
||||
char temp[16];
|
||||
sprintf(temp,"%08X",Memory::ReadUnchecked_U32(curAddress));
|
||||
W32Util::CopyTextToClipboard(wnd, temp);
|
||||
}
|
||||
break;
|
||||
case ID_DISASM_RUNTOHERE:
|
||||
{
|
||||
SendMessage(GetParent(wnd),WM_GEDBG_RUNTOWPARAM,curAddress,0);
|
||||
redraw();
|
||||
}
|
||||
break;
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
redraw();
|
||||
}
|
||||
|
||||
void CtrlDisplayListView::onVScroll(WPARAM wParam, LPARAM lParam)
|
||||
{
|
||||
switch (wParam & 0xFFFF)
|
||||
@@ -329,7 +407,6 @@ void CtrlDisplayListView::onKeyDown(WPARAM wParam, LPARAM lParam)
|
||||
redraw();
|
||||
}
|
||||
|
||||
|
||||
void CtrlDisplayListView::scrollAddressIntoView()
|
||||
{
|
||||
u32 windowEnd = windowStart + visibleRows * instructionSize;
|
||||
|
||||
@@ -38,6 +38,7 @@ public:
|
||||
void onPaint(WPARAM wParam, LPARAM lParam);
|
||||
void onKeyDown(WPARAM wParam, LPARAM lParam);
|
||||
void onMouseDown(WPARAM wParam, LPARAM lParam, int button);
|
||||
void onMouseUp(WPARAM wParam, LPARAM lParam, int button);
|
||||
void onVScroll(WPARAM wParam, LPARAM lParam);
|
||||
|
||||
void redraw();
|
||||
|
||||
@@ -53,6 +53,7 @@ static condition_variable actionWait;
|
||||
static recursive_mutex breaksLock;
|
||||
static std::vector<bool> breakCmds;
|
||||
static std::set<u32> breakPCs;
|
||||
static u32 tempBreakpoint = -1;
|
||||
static std::set<u32> breakTextures;
|
||||
static bool breakNextOp = false;
|
||||
static bool breakNextDraw = false;
|
||||
@@ -355,6 +356,7 @@ BOOL CGEDebugger::DlgProc(UINT message, WPARAM wParam, LPARAM lParam) {
|
||||
case WM_GEDBG_BREAK_CMD:
|
||||
{
|
||||
u32 pc = (u32)wParam;
|
||||
tempBreakpoint = -1;
|
||||
auto info = gpuDebug->DissassembleOp(pc);
|
||||
NOTICE_LOG(COMMON, "Waiting at %08x, %s", pc, info.desc.c_str());
|
||||
UpdatePreviews();
|
||||
@@ -389,6 +391,14 @@ BOOL CGEDebugger::DlgProc(UINT message, WPARAM wParam, LPARAM lParam) {
|
||||
}
|
||||
break;
|
||||
|
||||
case WM_GEDBG_RUNTOWPARAM:
|
||||
{
|
||||
lock_guard guard(breaksLock);
|
||||
u32 pc = (u32)wParam;
|
||||
tempBreakpoint = pc;
|
||||
SendMessage(m_hDlg,WM_COMMAND,IDC_GEDBG_RESUME,0);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
@@ -418,7 +428,7 @@ void WindowsHost::GPUNotifyCommand(u32 pc) {
|
||||
u32 op = Memory::ReadUnchecked_U32(pc);
|
||||
u8 cmd = op >> 24;
|
||||
|
||||
if (breakNextOp || CGEDebugger::IsOpOrTextureBreakPoint(op) || CGEDebugger::IsAddressBreakPoint(pc)) {
|
||||
if (breakNextOp || CGEDebugger::IsOpOrTextureBreakPoint(op) || CGEDebugger::IsAddressBreakPoint(pc) || pc == tempBreakpoint) {
|
||||
PauseWithMessage(WM_GEDBG_BREAK_CMD, (WPARAM) pc);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -28,7 +28,8 @@ enum {
|
||||
WM_GEDBG_BREAK_CMD = WM_USER + 200,
|
||||
WM_GEDBG_BREAK_DRAW,
|
||||
WM_GEDBG_STEPDISPLAYLIST,
|
||||
WM_GEDBG_TOGGLEPCBREAKPOINT
|
||||
WM_GEDBG_TOGGLEPCBREAKPOINT,
|
||||
WM_GEDBG_RUNTOWPARAM
|
||||
};
|
||||
|
||||
class CtrlDisplayListView;
|
||||
|
||||
@@ -550,6 +550,19 @@ BEGIN
|
||||
BEGIN
|
||||
MENUITEM "Add New", ID_DISASM_ADDNEWBREAKPOINT
|
||||
END
|
||||
POPUP "displaylistview"
|
||||
BEGIN
|
||||
MENUITEM "Copy Address", ID_DISASM_COPYADDRESS
|
||||
MENUITEM "Copy Instruction (Hex)", ID_DISASM_COPYINSTRUCTIONHEX
|
||||
MENUITEM "Copy Instruction (Disasm)", ID_DISASM_COPYINSTRUCTIONDISASM
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Run to Cursor", ID_DISASM_RUNTOHERE
|
||||
MENUITEM "Jump to Cursor", ID_DISASM_SETPCTOHERE
|
||||
MENUITEM "Set Stall" IDC_DEBUG_LIST_SETSTALL
|
||||
MENUITEM "Toggle Breakpoint", ID_DISASM_TOGGLEBREAKPOINT
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Go to in Memory View", ID_DISASM_GOTOINMEMORYVIEW
|
||||
END
|
||||
END
|
||||
|
||||
#endif // English (United States) resources
|
||||
|
||||
+2
-1
@@ -284,6 +284,7 @@
|
||||
#define IDC_DEBUG_BOTTOMTABS 40127
|
||||
#define ID_DEBUG_HIDEBOTTOMTABS 40128
|
||||
#define ID_DEBUG_TOGGLEBOTTOMTABTITLES 40129
|
||||
#define IDC_DEBUG_LIST_SETSTALL 40130
|
||||
|
||||
// Dummy option to let the buffered rendering hotkey cycle through all the options.
|
||||
#define ID_OPTIONS_BUFFEREDRENDERINGDUMMY 40500
|
||||
@@ -296,7 +297,7 @@
|
||||
#ifdef APSTUDIO_INVOKED
|
||||
#ifndef APSTUDIO_READONLY_SYMBOLS
|
||||
#define _APS_NEXT_RESOURCE_VALUE 254
|
||||
#define _APS_NEXT_COMMAND_VALUE 40130
|
||||
#define _APS_NEXT_COMMAND_VALUE 40131
|
||||
#define _APS_NEXT_CONTROL_VALUE 1191
|
||||
#define _APS_NEXT_SYMED_VALUE 101
|
||||
#endif
|
||||
|
||||
Reference in new issue
Block a user