summaryrefslogtreecommitdiff
path: root/src/yuzu/bootmanager.cpp
diff options
context:
space:
mode:
authorliamwhite <liamwhite@users.noreply.github.com>2023-08-22 11:30:25 -0400
committerGitHub <noreply@github.com>2023-08-22 11:30:25 -0400
commitef61d129d3ce357eeb12bc3ed14a1f5e376f1f95 (patch)
tree318a5af7edcf8c38de2d1d8a857fa25ce82cb827 /src/yuzu/bootmanager.cpp
parentb8bab551a4852395de473412bfc9d3f02f4cc01c (diff)
parent6af8cca2c1596f935cc9f71bf8b4b1497b9db5f7 (diff)
Merge pull request #11303 from lat9nq/screenshots-configurable
yuzu-qt: Add configuration for screenshot resolution
Diffstat (limited to 'src/yuzu/bootmanager.cpp')
-rw-r--r--src/yuzu/bootmanager.cpp16
1 files changed, 14 insertions, 2 deletions
diff --git a/src/yuzu/bootmanager.cpp b/src/yuzu/bootmanager.cpp
index bdd1497b5..407988b8f 100644
--- a/src/yuzu/bootmanager.cpp
+++ b/src/yuzu/bootmanager.cpp
@@ -11,6 +11,8 @@
#include <glad/glad.h>
#include <QtCore/qglobal.h>
+#include "common/settings_enums.h"
+#include "uisettings.h"
#if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0)) && YUZU_USE_QT_MULTIMEDIA
#include <QCamera>
#include <QCameraImageCapture>
@@ -916,7 +918,6 @@ void GRenderWindow::ReleaseRenderTarget() {
void GRenderWindow::CaptureScreenshot(const QString& screenshot_path) {
auto& renderer = system.Renderer();
- const f32 res_scale = Settings::values.resolution_info.up_factor;
if (renderer.IsScreenshotPending()) {
LOG_WARNING(Render,
@@ -924,7 +925,18 @@ void GRenderWindow::CaptureScreenshot(const QString& screenshot_path) {
return;
}
- const Layout::FramebufferLayout layout{Layout::FrameLayoutFromResolutionScale(res_scale)};
+ const Layout::FramebufferLayout layout{[]() {
+ u32 height = UISettings::values.screenshot_height.GetValue();
+ if (height == 0) {
+ height = Settings::values.use_docked_mode.GetValue() ? Layout::ScreenDocked::Height
+ : Layout::ScreenUndocked::Height;
+ height *= Settings::values.resolution_info.up_factor;
+ }
+ const u32 width =
+ UISettings::CalculateWidth(height, Settings::values.aspect_ratio.GetValue());
+ return Layout::DefaultFrameLayout(width, height);
+ }()};
+
screenshot_image = QImage(QSize(layout.width, layout.height), QImage::Format_RGB32);
renderer.RequestScreenshot(
screenshot_image.bits(),