mirror of
https://github.com/hrydgard/ppsspp.git
synced 2026-10-27 04:08:37 +01:00
Take screenshots with savestates.
This commit is contained in:
1 parent
b1c9e7382f
commit
2dd9b10c8d
8 files changed
+181
-80
No files matched your search
@@ -29,6 +29,7 @@
|
||||
#include "Core/Core.h"
|
||||
#include "Core/CoreTiming.h"
|
||||
#include "Core/Host.h"
|
||||
#include "Core/Screenshot.h"
|
||||
#include "Core/System.h"
|
||||
#include "Core/FileSystems/MetaFileSystem.h"
|
||||
#include "Core/ELF/ParamSFO.h"
|
||||
@@ -55,6 +56,7 @@ namespace SaveState
|
||||
SAVESTATE_LOAD,
|
||||
SAVESTATE_VERIFY,
|
||||
SAVESTATE_REWIND,
|
||||
SAVESTATE_SAVE_SCREENSHOT,
|
||||
};
|
||||
|
||||
struct Operation
|
||||
@@ -276,6 +278,11 @@ namespace SaveState
|
||||
Enqueue(Operation(SAVESTATE_REWIND, std::string(""), callback, cbUserData));
|
||||
}
|
||||
|
||||
void SaveScreenshot(const std::string &filename, Callback callback, void *cbUserData)
|
||||
{
|
||||
Enqueue(Operation(SAVESTATE_SAVE_SCREENSHOT, filename, callback, cbUserData));
|
||||
}
|
||||
|
||||
bool CanRewind()
|
||||
{
|
||||
return !rewindStates.Empty();
|
||||
@@ -326,6 +333,7 @@ namespace SaveState
|
||||
void SaveSlot(int slot, Callback callback, void *cbUserData)
|
||||
{
|
||||
std::string fn = GenerateSaveSlotFilename(slot, STATE_EXTENSION);
|
||||
std::string shot = GenerateSaveSlotFilename(slot, SCREENSHOT_EXTENSION);
|
||||
if (!fn.empty()) {
|
||||
auto renameCallback = [=](bool status, void *data) {
|
||||
if (status) {
|
||||
@@ -338,6 +346,8 @@ namespace SaveState
|
||||
callback(status, data);
|
||||
}
|
||||
};
|
||||
// Let's also create a screenshot.
|
||||
SaveScreenshot(shot, nullptr, 0);
|
||||
Save(fn + ".tmp", renameCallback, cbUserData);
|
||||
} else {
|
||||
I18NCategory *s = GetI18NCategory("Screen");
|
||||
@@ -552,6 +562,10 @@ namespace SaveState
|
||||
}
|
||||
break;
|
||||
|
||||
case SAVESTATE_SAVE_SCREENSHOT:
|
||||
TakeGameScreenshot(op.filename.c_str(), SCREENSHOT_JPG, SCREENSHOT_RENDER);
|
||||
break;
|
||||
|
||||
default:
|
||||
ERROR_LOG(COMMON, "Savestate failure: unknown operation type %d", op.type);
|
||||
callbackResult = false;
|
||||
|
||||
Reference in new issue
Block a user