diff --git a/Common/System/System.h b/Common/System/System.h index b2888574cb..8858b947e3 100644 --- a/Common/System/System.h +++ b/Common/System/System.h @@ -283,6 +283,7 @@ enum class UIMessage { SAVEDATA_SEARCH, RESTART_GRAPHICS, RECENT_FILES_CHANGED, + SAVE_FRAME_DUMP, }; std::string System_GetProperty(SystemProperty prop); diff --git a/SDL/CocoaBarItems.mm b/SDL/CocoaBarItems.mm index 9f6aa9c801..2c607e9ca4 100644 --- a/SDL/CocoaBarItems.mm +++ b/SDL/CocoaBarItems.mm @@ -398,9 +398,9 @@ void OSXOpenURL(const char *url) { takeScreenshotAction.target = self; takeScreenshotAction.tag = 9; - NSMenuItem *dumpNextFrameToLogAction = [[NSMenuItem alloc] initWithTitle:DESKTOPUI_LOCALIZED("Dump Next Frame to Log") action:@selector(dumpNextFrameToLog) keyEquivalent:@""]; - dumpNextFrameToLogAction.target = self; - dumpNextFrameToLogAction.tag = 10; + NSMenuItem *saveFrameDumpAction = [[NSMenuItem alloc] initWithTitle:DESKTOPUI_LOCALIZED("Save frame dump") action:@selector(saveFrameDump) keyEquivalent:@""]; + saveFrameDumpAction.target = self; + saveFrameDumpAction.tag = 10; NSMenuItem *copyBaseAddr = [[NSMenuItem alloc] initWithTitle:DESKTOPUI_LOCALIZED("Copy PSP memory base address") action:@selector(copyAddr) keyEquivalent:@""]; copyBaseAddr.target = self; @@ -424,7 +424,7 @@ void OSXOpenURL(const char *url) { [parent addItem:[NSMenuItem separatorItem]]; [parent addItem:takeScreenshotAction]; - [parent addItem:dumpNextFrameToLogAction]; + [parent addItem:saveFrameDumpAction]; [parent addItem:showDebugStatsAction]; [parent addItem:restartGraphicsAction]; @@ -493,8 +493,8 @@ void OSXOpenURL(const char *url) { return nil; } --(void)dumpNextFrameToLog { - gpu->DumpNextFrame(); +-(void)saveFrameDump { + System_PostUIMessage(UIMessage::SAVE_FRAME_DUMP); } -(void)takeScreenshot { diff --git a/UI/NativeApp.cpp b/UI/NativeApp.cpp index f1e8ba9275..9106aa6907 100644 --- a/UI/NativeApp.cpp +++ b/UI/NativeApp.cpp @@ -166,6 +166,7 @@ bool HandleGlobalMessage(UIMessage message, const std::string &value); static void ProcessWheelRelease(InputKeyCode keyCode, double now, bool keyPress); +void SaveFrameDump(); ScreenManager *g_screenManager; std::string config_filename; @@ -1255,6 +1256,9 @@ bool HandleGlobalMessage(UIMessage message, const std::string &value) { // Assume that the user may have modified things. MemoryStick_NotifyWrite(); return true; + } else if (message == UIMessage::SAVE_FRAME_DUMP) { + SaveFrameDump(); + return true; } else { return false; } diff --git a/Windows/MainWindowMenu.cpp b/Windows/MainWindowMenu.cpp index ae3440e22c..4c35a91e0b 100644 --- a/Windows/MainWindowMenu.cpp +++ b/Windows/MainWindowMenu.cpp @@ -59,7 +59,6 @@ #endif extern bool g_TakeScreenshot; -extern void SaveFrameDump(); namespace MainWindow { extern HINSTANCE hInst; @@ -770,9 +769,8 @@ namespace MainWindow { case ID_DEBUG_SAVEFRAMEDUMP: { - System_RunOnMainThread([]() { - SaveFrameDump(); - }); + System_PostUIMessage(UIMessage::SAVE_FRAME_DUMP); + break; }