mirror of
https://github.com/PabloMK7/citra
synced 2024-11-14 20:58:23 +00:00
Run screenshot capture function in paused state by capturing next frame (#116)
* Allow screenshot capture in paused state by unpausing to capture next frame * Change `QMessageBox::No` to `QMessageBox::Yes` * Fix formatting * Fix formatting
This commit is contained in:
parent
54aee70e68
commit
e15d4c0d4a
1 changed files with 38 additions and 24 deletions
|
@ -974,7 +974,7 @@ void GMainWindow::UpdateMenuState() {
|
|||
action->setEnabled(emulation_running);
|
||||
}
|
||||
|
||||
ui->action_Capture_Screenshot->setEnabled(emulation_running && !is_paused);
|
||||
ui->action_Capture_Screenshot->setEnabled(emulation_running);
|
||||
|
||||
if (emulation_running && is_paused) {
|
||||
ui->action_Pause->setText(tr("&Continue"));
|
||||
|
@ -2412,33 +2412,47 @@ void GMainWindow::OnSaveMovie() {
|
|||
}
|
||||
|
||||
void GMainWindow::OnCaptureScreenshot() {
|
||||
if (!emu_thread || !emu_thread->IsRunning()) [[unlikely]] {
|
||||
if (!emu_thread) [[unlikely]] {
|
||||
return;
|
||||
}
|
||||
|
||||
OnPauseGame();
|
||||
std::string path = UISettings::values.screenshot_path.GetValue();
|
||||
if (!FileUtil::IsDirectory(path)) {
|
||||
if (!FileUtil::CreateFullPath(path)) {
|
||||
QMessageBox::information(this, tr("Invalid Screenshot Directory"),
|
||||
tr("Cannot create specified screenshot directory. Screenshot "
|
||||
"path is set back to its default value."));
|
||||
path = FileUtil::GetUserPath(FileUtil::UserPath::UserDir);
|
||||
path.append("screenshots/");
|
||||
UISettings::values.screenshot_path = path;
|
||||
};
|
||||
const bool was_running = emu_thread->IsRunning();
|
||||
|
||||
if (was_running ||
|
||||
(QMessageBox::question(
|
||||
this, tr("Game will unpause"),
|
||||
tr("The game will be unpaused, and the next frame will be captured. Is this okay?"),
|
||||
QMessageBox::Yes | QMessageBox::No, QMessageBox::No) == QMessageBox::Yes)) {
|
||||
if (was_running) {
|
||||
OnPauseGame();
|
||||
}
|
||||
std::string path = UISettings::values.screenshot_path.GetValue();
|
||||
if (!FileUtil::IsDirectory(path)) {
|
||||
if (!FileUtil::CreateFullPath(path)) {
|
||||
QMessageBox::information(
|
||||
this, tr("Invalid Screenshot Directory"),
|
||||
tr("Cannot create specified screenshot directory. Screenshot "
|
||||
"path is set back to its default value."));
|
||||
path = FileUtil::GetUserPath(FileUtil::UserPath::UserDir);
|
||||
path.append("screenshots/");
|
||||
UISettings::values.screenshot_path = path;
|
||||
};
|
||||
}
|
||||
|
||||
static QRegularExpression expr(QStringLiteral("[\\/:?\"<>|]"));
|
||||
const std::string filename = game_title.remove(expr).toStdString();
|
||||
const std::string timestamp = QDateTime::currentDateTime()
|
||||
.toString(QStringLiteral("dd.MM.yy_hh.mm.ss.z"))
|
||||
.toStdString();
|
||||
path.append(fmt::format("/{}_{}.png", filename, timestamp));
|
||||
|
||||
auto* const screenshot_window =
|
||||
secondary_window->HasFocus() ? secondary_window : render_window;
|
||||
screenshot_window->CaptureScreenshot(
|
||||
UISettings::values.screenshot_resolution_factor.GetValue(),
|
||||
QString::fromStdString(path));
|
||||
OnStartGame();
|
||||
}
|
||||
|
||||
static QRegularExpression expr(QStringLiteral("[\\/:?\"<>|]"));
|
||||
const std::string filename = game_title.remove(expr).toStdString();
|
||||
const std::string timestamp =
|
||||
QDateTime::currentDateTime().toString(QStringLiteral("dd.MM.yy_hh.mm.ss.z")).toStdString();
|
||||
path.append(fmt::format("/{}_{}.png", filename, timestamp));
|
||||
|
||||
auto* const screenshot_window = secondary_window->HasFocus() ? secondary_window : render_window;
|
||||
screenshot_window->CaptureScreenshot(UISettings::values.screenshot_resolution_factor.GetValue(),
|
||||
QString::fromStdString(path));
|
||||
OnStartGame();
|
||||
}
|
||||
|
||||
void GMainWindow::OnDumpVideo() {
|
||||
|
|
Loading…
Reference in a new issue