Skip to content

Commit

Permalink
Use the time of creating the screenshot, not the time of saving the s…
Browse files Browse the repository at this point in the history
…creenshot
  • Loading branch information
Maschell committed Mar 2, 2024
1 parent 6795e12 commit 1b8a752
Show file tree
Hide file tree
Showing 3 changed files with 9 additions and 7 deletions.
4 changes: 4 additions & 0 deletions src/screenshot_utils.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -252,6 +252,9 @@ bool takeScreenshot(GX2ColorBuffer *srcBuffer, GX2ScanTarget scanTarget, GX2Surf
goto error;
}

OSCalendarTime time;
OSTicksToCalendarTime(OSGetTime(), &time);

param->notificationHandle = screenshot;
param->sourceBuffer = (uint8_t *) colorBuffer.surface.image;
param->width = width;
Expand All @@ -262,6 +265,7 @@ bool takeScreenshot(GX2ColorBuffer *srcBuffer, GX2ScanTarget scanTarget, GX2Surf
param->quality = quality;
param->format = colorBuffer.surface.format;
param->scanTarget = scanTarget;
param->time = time;

res = sendMessageToThread(param);
if (!res) {
Expand Down
11 changes: 4 additions & 7 deletions src/thread.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@
#include "screenshot_utils.h"
#include "utils/StringTools.h"
#include "utils/logger.h"
#include "utils/utils.h"
#include <coreinit/cache.h>
#include <coreinit/title.h>
#include <dirent.h>
Expand All @@ -14,9 +13,7 @@
FSIOThreadData gThreadData;
bool gThreadsRunning;

bool getPath(GX2ScanTarget scanTarget, ImageOutputFormatEnum outputFormat, std::string &path) {
OSCalendarTime output;
OSTicksToCalendarTime(OSGetTime(), &output);
static bool getPath(GX2ScanTarget scanTarget, ImageOutputFormatEnum outputFormat, std::string &path, OSCalendarTime &output) {
std::string buffer = string_format("%s%016llX", WIIU_SCREENSHOT_PATH, OSGetTitleID());
if (!gShortNameEn.empty()) {
buffer += string_format(" (%s)", gShortNameEn.c_str());
Expand Down Expand Up @@ -66,7 +63,7 @@ bool getPath(GX2ScanTarget scanTarget, ImageOutputFormatEnum outputFormat, std::
return true;
}

static int32_t fsIOthreadCallback([[maybe_unused]] int argc, const char **argv) {
static int32_t fsIOThreadCallback([[maybe_unused]] int argc, const char **argv) {
auto *magic = ((FSIOThreadData *) argv);

constexpr int32_t messageSize = sizeof(magic->messages) / sizeof(magic->messages[0]);
Expand All @@ -81,7 +78,7 @@ static int32_t fsIOthreadCallback([[maybe_unused]] int argc, const char **argv)

std::string path;
bool success = false;
if (getPath(message->scanTarget, message->outputFormat, path)) {
if (getPath(message->scanTarget, message->outputFormat, path, message->time)) {
DEBUG_FUNCTION_LINE("Saving to %s", path.c_str());
auto res = saveTextureAsPicture(path, message->sourceBuffer, message->width, message->height, message->pitch, message->format, message->outputFormat, message->convertRGBtoSRGB, message->quality);
if (res) {
Expand Down Expand Up @@ -155,7 +152,7 @@ void startFSIOThreads() {

OSMemoryBarrier();

if (!OSCreateThread(threadData->thread, &fsIOthreadCallback, 1, (char *) threadData, reinterpret_cast<void *>((uint32_t) threadData->stack + stackSize), stackSize, 31, OS_THREAD_ATTRIB_AFFINITY_ANY)) {
if (!OSCreateThread(threadData->thread, &fsIOThreadCallback, 1, (char *) threadData, reinterpret_cast<void *>((uint32_t) threadData->stack + stackSize), stackSize, 31, OS_THREAD_ATTRIB_AFFINITY_ANY)) {
free(threadData->thread);
free(threadData->stack);
threadData->setup = false;
Expand Down
1 change: 1 addition & 0 deletions src/thread.h
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ struct SaveScreenshotMessage {
bool convertRGBtoSRGB;
int quality;
GX2ScanTarget scanTarget;
OSCalendarTime time;
};

extern FSIOThreadData gThreadData;
Expand Down

0 comments on commit 1b8a752

Please sign in to comment.